【发布时间】:2010-11-16 17:51:46
【问题描述】:
我想遍历一个 DOM 元素列表(复选框),并且只要定义了这个列表就一直继续下去。元素是“c1r1”、“c1r2”、“c1r3”等。一旦我遇到未定义的元素,我就会停下来。问题似乎在于将 typeof 与 DOM 元素一起使用。
这是有问题的代码:
function domIsDefined(idString){
alert(idString);
var isItDefined = (typeof $(idString) != 'undefined');
alert(isItDefined);
return isItDefined;
}
...
for(i=1; domIsDefined('c1r' + i); i++){
if($('c1r' + i).checked==true){
// do stuff
}
}
问题的症结在于这一行:
var isItDefined = (typeof $(idString) != 'undefined');
我发现问题在于 typeof $(idString) 总是返回对象,无论它是否已定义。有什么好方法可以做这种事情吗?我想我会尝试捕获并尽早检查 .checked 属性,但这感觉很恶心。
【问题讨论】:
-
是否有任何特定原因无法使用单个 DOM 方法获取所有复选框,即 getElementsByTagName('input') 并遍历节点集合?或者,如果您使用 jQuery,只需
$(':checked').each( function(){ /*do stuff*/ }); -
这是使用原型,很抱歉造成混淆。我应该澄清一下。
-
对标题中的 IE 也感到抱歉...我以为只有 IE,但我的 Firebug 控制台刚刚关闭。
标签: javascript dom prototypejs undefined typeof