如何设置“if object exists”条件?

时间:2010-12-09 14:30:21

标签: javascript object

有没有办法检查对象是否存在?我不断收到“需要对象”的错误。我知道该对象不存在,我想绕过我的代码的一部分,如果是这样的话。我不知道我没有尝试过......

    var codeName = document.getElementById('testCode');
    //I have tried
    if(codeName != null)
    if(codeName.length != 0)
    if(typeOf codeName != 'undefined')
    if(!codeName)
    if(codeName.value != null)

有没有办法查看对象是否存在?

9 个答案:

答案 0 :(得分:3)

getElementById调用后,codeName是DOM元素或null。您可以使用警报查看:

alert(codeName);

所以if (codename != null)应该有用。

错误是在它到达那么远之前发生的吗?我会尝试添加警报,以便在代码运行时查看值。或者在调试器中逐步执行此代码。

答案 1 :(得分:2)

尝试:

var codeName = document.getElementById(code[i]) || null;
if (codeName) {/* action when codeName != null */}

如果你想确定codeName是一个Object:

if (codeName && codeName instanceof Object) {
  /* action when codeName != null and Object */
}

答案 2 :(得分:0)

var codeList = document.getElementById('codeList');
if(!codeList && !codeList.value && !codeList.value.length) return;
var code = codeList.value.split(","),
    itemCount = code.length;
if(!itemCount) return;
for (var i=0, i<itemCount; i++) {
    var codeName = document.getElementById(code[i]);
    if(!codename || !codename.length) continue;
    //do something here...
}

我在这里得到了一个有效的例子:http://jsbin.com/uduxe4/15

答案 3 :(得分:-1)

我不知道document是什么,但您可以尝试类似

的内容
if(document.getElementById('code'+[i]) == null)
{
//...do Something
}

所以在使用之前测试它是否存在 ...

答案 4 :(得分:-1)

我没有做很多JS编码,但看起来你的[i]就是问题。据我所知,[]用于访问数组的字段,而你没有数组。只需使用“代码”+ i

答案 5 :(得分:-1)

红宝石nil相当于false

因此,请尝试检查:

if codeName

答案 6 :(得分:-1)

<div id='code1'></div>

var itemCount = 10;
var len = 10;
len = itemCount;
for (var i=0;i<len; i++) {
    var codeName = document.getElementById('code'+ i);
    if(codeName == null)
       alert("Nope " + i);
    else
        alert("Yep " + i);
}

答案 7 :(得分:-1)

尝试/捕获会为你工作吗?的 Example

function toDoStuff(elem) {
    codeName = document.getElementById(elem);
    if (!codeName) throw "Object isn't here yet!"
}


for (var i = 0; i < 5; i++) {
    try {
        toDoStuff('someElem');
    } catch (err) {
        if (err == "Object isn't here yet!") {
            alert("Object isn't ready yet leaving loop!");
            break;
        }
    }
}

答案 8 :(得分:-2)

也许尝试检查您的对象是否继承了您的函数所需的类型?像这样:

if(codeName is String)