在DOM元素上使用Javascript的typeof来检查undefined(IE问题)

jtp*_*yda 1 javascript dom typeof undefined prototypejs

我想迭代一个DOM元素列表(复选框),并且只要定义了这个列表就继续.元素是'c1r1','c1r2','c1r3'等.一旦我遇到一个未定义的元素,我就停止了.问题似乎是使用带有DOM元素的typeof.

这是有问题的代码:

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
    }
}
Run Code Online (Sandbox Code Playgroud)

问题的关键在于这一行:

var isItDefined = (typeof $(idString) != 'undefined');
Run Code Online (Sandbox Code Playgroud)

正如我所发现的那样,问题是typeof $(idString)总是返回对象,无论它是否被定义.有没有什么好方法可以做这种事情?我想我会尽早尝试捕获并检查.checked属性,但这感觉很恶心.

Tim*_*own 5

function domIsDefined(idString){
    return !!document.getElementById(idString);
}
Run Code Online (Sandbox Code Playgroud)