我正在为一款名为《英雄联盟》的游戏编写一个粉丝网站,我的用户想要创建角色构建,应该点击技能图标并给它一个点。(最多30分)
下面是一个实例:http://www.solomid.net/masteries.php
你基本上有30个点。当你点击一个技能图像时,它会为该技能添加一个点。
因为我是JS初学者&jQuery,我想问一下:
-
我现在可以创建一个div,并给它"onClick="alert('I am clicked.');"参数,所以当有人点击div时,它会发出警报。我需要更新一点,比如说:
- 用户点击div(例如,我们说它目前是0/4技能值)
- 0增加1,变为1/4。
- 用户重复3次,给予技能4/4点。
- 这个值应该被发布到PHP页面,因此,保存在form.
-
如你所见,当你点击skills时,它会在哈希字符串后生成一个int值。
;# 0332000000000000003000000000000000000000000000000
这个字符串的含义是,[skill1_value] [skill2_value] [skill3_value]…(skillLast_value)
如果你看到这样的值;
30001(其余为0)
这意味着,用户点击了3次"第一个技能",没有点击接下来的3个技能。在第五个技能上点击一次。
而不是张贴每一个表单值到PHP,我将只张贴哈希字符串的整数值。其余的计算将用PHP完成。
TL;博士版
- 想象3xdiv. (div1,div2,div3)
- 想象每个div在屏幕上包含一个可见的数字值。(val1, val2, val3)
- 所有值默认为0。
- 如果你点击div1, val1的值应该增加1。如果你在div2中点击,val2的值应该增加1,以此类推。 新值应该总是显示在HTML输出中。当用户点击"保存"时,应该生成如下字符串:(val1 + val2 + val3…)(例如716)
非常感谢任何帮助。我知道这是一个初学者的问题,所以文章的链接也会很有用。
这是一个有最大值和上限的例子,你必须使用多少点
http://jsfiddle.net/2Q2SS/2/var remaining = 5;
var MAX_VALUE = 4;
$('.clickybox').click( function(el) {
if (remaining == 0)
return;
var resBox = $(this).find('.result');
var curVal = resBox.attr('_data-value');
if (!curVal)
curVal = 0;
if (curVal >= MAX_VALUE)
return;
curVal++;
remaining--;
resBox.text(curVal + '/4');
resBox.attr('_data-value', curVal);
alert($('.result').map(function() {
var s = $(this).attr('_data-value');
if (s == undefined) s = '0';
return s;
}).get().join('-'));
});
编辑:更新为清晰
在div的onclick
事件期间,this
关键字默认绑定到该div元素,因此您始终知道哪个div触发了该事件。我猜你有一些JavaScript对象收集值,所以你可以这样做:
onDivClick = function() {
skillObj[this.id].value++; // Increments the stored value
this.innerHTML = skillObj.getDisplayValue(this.id); // Updates the div text
};
div1.onclick = onDivClick;
div2.onclick = onDivClick; // Same function can be assigned to multiple divs
细节可能会在您的实现中改变,但这是一般的想法。"保存"按钮可以通过skillObj
循环并建立一个字符串,然后由你将该字符串发送到服务器。
我不使用jQuery,但做这样的事情并不真的需要它。如果你需要特定的jQuery帮助,那么你应该考虑问一个更具体的问题。
希望对你有帮助。
将您的技能点击存储在散列或隐藏字段中。它将以字符串000开始。然后,您可以根据所单击的div增加正确的数字。
在某种程度上,你需要在你的哈希字符串中保持div(技能)和数字位置(索引)之间的映射。
也有一个限制,只能有技能水平在0…
下面是一个工作示例:http://jsfiddle.net/THubm/4/
和代码:
$(function(){
var numerators = $('.numerator');
$('.title').click(function(){
var numerator = $(this).next().children();
var newVal = +numerator.text() + 1;
numerator.text(newVal);
var hash = '';
numerators.each(function(){
hash += $(this).text();
});
alert(hash);
});
});
与其解释每个部分,不如让我知道你有什么问题。