在javascript上使用onClick增加变量值,并在HTML表单上显示新值


Increasing a variable value with onClick on javascript and showing new value on HTML form

我正在为一款名为《英雄联盟》的游戏编写一个粉丝网站,我的用户想要创建角色构建,应该点击技能图标并给它一个点。(最多30分)

下面是一个实例:http://www.solomid.net/masteries.php

你基本上有30个点。当你点击一个技能图像时,它会为该技能添加一个点。

因为我是JS初学者&jQuery,我想问一下:

  1. 我现在可以创建一个div,并给它"onClick="alert('I am clicked.');"参数,所以当有人点击div时,它会发出警报。我需要更新一点,比如说:

    1. 用户点击div(例如,我们说它目前是0/4技能值)
    2. 0增加1,变为1/4。
    3. 用户重复3次,给予技能4/4点。
    4. 这个值应该被发布到PHP页面,因此,保存在form.
    我该怎么做呢?你能给我举个例子它是如何在jQuery中工作的吗?
  2. 如你所见,当你点击skills时,它会在哈希字符串后生成一个int值。

例如

;# 0332000000000000003000000000000000000000000000000

这个字符串的含义是,[skill1_value] [skill2_value] [skill3_value]…(skillLast_value)

如果你看到这样的值;

30001(其余为0)

这意味着,用户点击了3次"第一个技能",没有点击接下来的3个技能。在第五个技能上点击一次。

而不是张贴每一个表单值到PHP,我将只张贴哈希字符串的整数值。其余的计算将用PHP完成。

TL;博士版

  1. 想象3xdiv. (div1,div2,div3)
  2. 想象每个div在屏幕上包含一个可见的数字值。(val1, val2, val3)
  3. 所有值默认为0。
  4. 如果你点击div1, val1的值应该增加1。如果你在div2中点击,val2的值应该增加1,以此类推。
  5. 新值应该总是显示在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);
    });
});

与其解释每个部分,不如让我知道你有什么问题。