0

为什么for循环不运行?

  • 错误控制台为空
  • 该函数countfiles返回一个整数
  • parseInt(countfiles())也不行

这是我的代码:

function set_default_value() {
    var element = document.getElementsByName('fields');
    for (var i = countfields(); i < element.length; ++i) {
        element[i].value = "default";
    }
}

为什么不运行?

编辑:

  • Countfields 小于 element.length
  • 函数正在运行
  • Countfield 返回一个数字,例如 0, 1, 2, 3, ...

这是功能countfields

function countfields() {
    var field_counter = 0;
    for (var i = 0; i < 50; i++) {
        if (typeof document.getElementsByName('other_fields')[i] != "undefined") {
        var field_counter = field_counter + 1; 
        }
    }
    return field_counter; 
}
4

3 回答 3

1

@varunachar 在他的一条评论中谈到了这个问题:

countfields 返回的数字可能大于 element.length

在这一行:

for (var i = countfields(); i < element.length; ++i)

将此读i < element.length“只要i小于element.length,就做事”。或者,如果countfields()等于或大于,则什么也不会发生。

1 other_fields:http : //jsfiddle.net/D5ZHV/有效
6 other_fieldshttp : //jsfiddle.net/Ay6BN/无效

于 2013-02-11T18:21:49.760 回答
0

改变

        var field_counter = field_counter + 1; 

        field_counter = field_counter + 1; 

countfields()功能上。您field_counter在 for 循环中声明这是错误的

于 2013-02-11T18:05:23.737 回答
0
function countfields() {
    var field_counter = 0;
    for(var i = 0; i < 50; i++) {
        if(typeof document.getElementsByName('other_fields')[i] != "undefined") {
        var field_counter = field_counter + 1; } }
    return field_counter; }

var 总是定义变量的范围。在var field_counterif 语句内部将创建一个在 if 语句内具有作用域的变量。

你应该写成

field_counter = field_counter + 1; 

如果你测试你的 countfields() 它应该总是返回 0;

也尝试做console.log(elements)

于 2013-02-11T18:08:36.370 回答