1

是的,所以这个问题可能并不能说明我想说什么,但这就是我想要实现的目标。我在一个页面上有 6 个文本框,每个文本框都包含一个 0 到 500 之间的数字(没有限制,但我不希望这个数字高于这个数字)。这个数字取决于其他地方的计算,但与这个问题无关,所以我把它省略了。无论如何,我想做的是;

运行一个循环并在代码下方的代码中分配一个新的文本框等scoreone, scoretwo,根据等值的大小在 1 到 10 之间的索引。indexone, indextwo

因此,例如,如果indexone包含 15,则文本框scoreone将填充 0。现在这可以正常工作,但仅适用于一个文本框,因为我有六个,我不确定如何为所有文本框执行此操作(即一个接一个)。我正在使用 JavaScript 和 jQuery ......

HTML:

<input type="text" disabled="disabled" value="20" id="indexone" />
<input type="text" disabled="disabled" value="0" id="scoreone" /><br>


<input type="text" disabled="disabled" value="60" id="indextwo" />
<input type="text" disabled="disabled" value="0" id="scoretwo" /><br>


<input type="text" disabled="disabled" value="100" id="indexthree"/>
<input type="text" disabled="disabled" value="0" id="scorethree" /><br>


<input type="text" disabled="disabled" value="160" id="indexfour"/>
<input type="text" disabled="disabled" value="0" id="scorefoure" /><br>

<input type="text" disabled="disabled" value="180" id="indexfive"/>
<input type="text" disabled="disabled" value="0" id="scorefive" /><br>


<input type="text" disabled="disabled" value="210" id="indexsix"/>
<input type="text" disabled="disabled" value="0" id="scoresix" /><br>

JS:

var indexArray = [indexone, indextwo, indexthree, indexfour, indexfive, indexsix];

for (var i = 0; i < indexArray.length; i++) {
    if ((indexArray[i] >= 0) && (indexArray[i] < 25)) {
        scoreone = parseInt(1);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 25) && (indexArray[i] < 50)) {
        scoreone = parseInt(2);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 50) && (indexArray[i] < 75)) {
        scoreone = parseInt(3);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 75) && (indexArray[i] < 100)) {
        scoreone = parseInt(4);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 100) && (indexArray[i] < 125)) {
        scoreone = parseInt(5);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 125) && (indexArray[i] < 150)) {
        scoreone = parseInt(6);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 150) && (indexArray[i] < 175)) {
        scoreone = parseInt(7);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 175) && (indexArray[i] < 200)) {
        scoreone = parseInt(8);
        $('#scoreone').val(scoreone);
    }
    else if ((indexArray[i] >= 200) && (indexArray[i] <= 225)) {
        scoreone = parseInt(9);
        $('#scoreone').val(scoreone);
    }
    else if (indexArray[i] > 225) {
        scoreone = parseInt(10);
        $('#scoreone').val(scoreone);
    }

}

我也把我想做的事情放在了这里......

4

4 回答 4

1

只需使用类并循环

HTML

<input type="text" disabled="disabled" value="20" class="index" />
<input type="text" disabled="disabled" value="0" class="score" /><br>


<input type="text" disabled="disabled" value="60" class="index" />
<input type="text" disabled="disabled" value="0" class="score" /><br>


<input type="text" disabled="disabled" value="100" class="index"/>
<input type="text" disabled="disabled" value="0" class="score" /><br>


<input type="text" disabled="disabled" value="160" class="index"/>
<input type="text" disabled="disabled" value="0" class="score" /><br>

<input type="text" disabled="disabled" value="180" class="index"/>
<input type="text" disabled="disabled" value="0" class="score" /><br>


<input type="text" disabled="disabled" value="210" class="index"/>
<input type="text" disabled="disabled" value="0" class="score" /><br>​

JavaScript

//That whole if/else if statement reduced to a calculation
function getValue(val){
    var number = (Math.round(val/100*4)/4)*100/25;
    if (number>10) {
        number = 10;
    }        
    return number;
}

//Find all of the indexes and scores, returned in document order
var indexes = $(".index");
var scores = $(".score");

//loop through indexes and set the value on the corresponding score
indexes.each(function(ind) {
    var index = jQuery(this);
    var score = scores.eq(ind);
    var value = getValue(index.val());
    score.val(value);
});

运行示例

于 2012-10-10T14:40:02.063 回答
1

试试这个工作示例,女巫改变了整数的单词:

jsfiddle

于 2012-10-10T14:47:43.870 回答
0

试试这个http://jsfiddle.net/wthFv/5/

于 2012-10-10T14:38:32.557 回答
0

希望这可以简化:

更新字段的 ID 以使用索引号作为后缀,如score1, score2.. 和index1, index2...

然后编写一个紧凑的 java 函数,如下所示:

 for (var i = 1; i <= 6; i++) {
    $('#score'+i).val(Math.ceil($('#index'+i).val()/25));
  }

如果您不想更改 ID,我认为下面应该可以。

var indexArray = [indexone, indextwo, indexthree, indexfour, indexfive, indexsix];
var scoreArray = [scoreone, scoretwo, scorethree, scorefour, scorefive, scoresix];

 for (var i = 0; i < indexArray.length; i++) {
    $('#'+scoreArray[i]).val(Math.ceil($('#'+indexArray[i]).val()/25));
  }
于 2012-10-10T14:46:15.183 回答