我正在编写一个名为League of Legends的游戏的粉丝网站,我的用户想要创建角色版本,应点击技能图标并给它一点。 (最多30分)
这里有一个实例: http://www.solomid.net/masteries.php
你基本上有30分。当您单击技能图像时,它会为该技能添加一个点。
因为我是JS& amp;的初学者jQuery,我想问一下:
我现在可以创建一个div并给它“onClick =”警告('我被点击。');“参数以便当有人点击div时它会发出警告。我需要稍微更新一下,让我们说:
如您所见,当您点击技能时,它会在哈希字符串后生成一个int值。
例如; #0332000000000000003000000000000000000000000000000
这个字符串的含义是, [skill1_value] [skill2_value] [skill3_value] ... [skillLast_value]
所以,如果你看到这样的值;
这意味着,用户在“第一技能”上点击了3次,没有点击接下来的3个技能。点击第五个技能一次。
我不会将每个表单值发布到PHP,而只会发布哈希字符串的整数值。其余的计算将使用PHP完成。
TL; DR版本
非常感谢任何帮助。我知道这是一个初学者的问题,因此链接到文章也很有用。
答案 0 :(得分: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('-'));
});
编辑:为清晰起见而更新
答案 1 :(得分:1)
以下是一个有效的例子: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);
});
});
不是解释每一部分,而是让我知道你有什么问题。
答案 2 :(得分:1)
在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帮助,那么您应该考虑提出更具体的问题。
希望有所帮助。
答案 3 :(得分:1)
将您的技能点击存储在哈希或隐藏字段中。它将以000字符串开始。然后,您可以根据单击的div增加正确的数字。
不知何故,你需要在你的哈希字符串中保持div(技能)和数字位置(索引)之间的映射。
还有一个限制,即只能在0到9之间获得技能等级,因为你只能限制一个数字。