0

我正在将文本字段(最多 32 个)动态添加到我的页面中,我需要遍历所有这些并检查,如果它们都是空的,我将显示一条警告消息!我不想使用document.getElementsByTagName('input')因为除了动态文件之外,页面上还有其他文本文件!

我不知道为什么当我在下面使用此代码时,它不允许我退出 FOR 循环并打印alert('Test')和打印警告?

谁能帮我解决这个问题!谢谢!

        var counter=0

        for(var i = 1; i <= 32; i++){                   
            var e = document.getElementById('mytextfieldid'+i).value;

            if(e==''){}
            else{counter++;}
        }

        alert('Test');
        if(counter==0){DisplayWarning();}
4

3 回答 3

2

写的时候

document.getElementById('mytextfieldid'+i).value

你假设document.getElementById('mytextfieldid'+i)存在。如果不是,它将引发错误并停止代码执行。

您需要在访问该值之前测试该元素。

var element = document.getElementById('mytextfieldid'+i);
if(element){
   // update your counter...
}
于 2013-11-12T16:05:07.623 回答
1

如果您想检查所有元素是否为空白,您可能需要尝试使用标志。如果命中任何值,则更改标志并跳出循环。

注意:休息往往会使事情变得更难理解。

    var empty = true;

    for(var i = 1; i <= 32; i++){                   
        var e = document.getElementById('mytextfieldid'+i);

        if(e && e.value !=''){
            console.log(e);
            empty = false;
            break;
        }
    }

    alert('Test');
    if(empty){DisplayWarning();}
于 2013-11-12T16:10:28.093 回答
0

如果元素的数量是可变的,为什么循环总是 32?我希望它是一个与最后一个动态添加的字段的编号相匹配的变量。

于 2013-11-14T04:14:10.277 回答