如何处理在Javascript中多次调用的代码?

时间:2016-07-28 04:22:34

标签: javascript

我正在研究一个Javascript代码,它会重复一些行很多次。我已经尝试将这些行放在一个函数中,如下所示

function rpit() {
    a += 1; b += 1;
}
document.getElementById('button1').onclick = function() {
    var a = +document.getElementById('inpA').value,
    b = +document.getElementById('inpB').value;
    rpit();
    if (a == 5) rpit();
    if (b == 10) rpit();
    rpit();
}

但似乎这种方式不起作用。我该如何处理这些代码?谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

对象可能更容易: -

function toEnglishNum( num, dontTrim ) {
    var i = 0,
        j = 0,
        dontTrim = dontTrim || false,
        num = dontTrim ? num.toString() : num.toString().trim(),
        len = num.length,
        res = '',
        pos,
        persianNumbers = typeof persianNumber == 'undefined' ?
            [ '۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹' ] :
            persianNumbers;

    for ( ; i < len; i++ )
        if ( ~( pos = persianNumbers.indexOf( num.charAt( i ) ) ) )
            res += pos;
        else
            res += num.charAt( i );
    return res;
};

不确定你的'b'是全局变量还是忘了放var,如果它需要全局

function rpit(o) {
    o.a += 1; o.b += 1;
}
document.getElementById('button').onclick = function() {
    var o = {};
    o.a = document.getElementById('inpA').value,
    o.b = document.getElementById('inpB').value;
    rpit(o);
    if (o.a == 5) rpit(o);
    if (o.b == 10) rpit(o);
    rpit(o)
}

最后......但是,如果你这样做,你可能会有点混乱。

答案 1 :(得分:1)

您应该更改代码以使其按照您希望的方式工作。

  • 首先,假设您要检查是否有任何按钮点击,您应该使用document.getElementsByTagName()代替document.getElementById()。然后迭代结果并像你一样添加一个onclick监听器。
  • 其次,主要问题之一是rpit()没有ab的知识,因为它们既不是本地的也不是全局的,所以在顶部定义它们值为0.
  • 第三大问题是输入字段中的.value会将其作为字符串获取,因此如果a=5,则a+=1会将其a=51设为parseInt()。这可以通过使用console.log()和值以及第二个参数10(意味着十进制系统)来修复。

根据这些说明,我将您的代码重构为以下内容(var a=0, b=0; function rpit() { a += 1; b += 1; } var buttons = document.getElementsByTagName('button'); for(var i = 0; i < buttons.length; i++) buttons[i].onclick = function(){ a = parseInt(document.getElementById('inpA').value, 10); b = parseInt(document.getElementById('inpB').value,10); rpit(); if (a == 5) rpit(); if (b == 10) rpit(); rpit(); console.log("a: "+a+", b: "+b); }将向您显示结果。

&#13;
&#13;
<button >button</button>
<input id="inpA" value="5"/>
<input id="inpB" value="8"/>
&#13;
    id  identifier  pokemon_id  stat_id base_stat   local_language_id   name
36  7   Squirtle    7   1   44  9   HP
37  7   Squirtle    7   2   48  9   Attack
38  7   Squirtle    7   3   65  9   Defense
39  7   Squirtle    7   4   50  9   Special Attack
40  7   Squirtle    7   5   64  9   Special Defense
41  7   Squirtle    7   6   43  9   Speed


    id  identifier  pokemon_id  stat_id base_stat   local_language_id   name
18  4   Charmander  4   1   39  9   HP
19  4   Charmander  4   2   52  9   Attack
20  4   Charmander  4   3   43  9   Defense
21  4   Charmander  4   4   60  9   Special Attack
22  4   Charmander  4   5   50  9   Special Defense
23  4   Charmander  4   6   65  9   Speed
&#13;
&#13;
&#13;