Как мне установить условие «если объект существует»? - PullRequest
5 голосов
/ 09 декабря 2010

Есть ли способ проверить, существует ли объект? Я продолжаю получать ошибку "Требуется объект". Я знаю, что объект не существует, и я хотел бы обойти часть моего кода, если это так. Я не знаю, что я не пробовал ...

    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 ]

3 голосов
/ 09 декабря 2010

После вызова getElementById, codeName является либо элементом DOM, либо нулевым.Вы можете использовать оповещение, чтобы увидеть, какие:

alert(codeName);

Так что if (codename != null) должно работать.

Произошла ли ошибка до того, как она зашла так далеко?Я бы попытался добавить оповещения, чтобы увидеть значения во время выполнения кода.Или выполните этот код в отладчике.

2 голосов
/ 09 декабря 2010

Попробуйте:

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

, если вы хотите убедиться, что codeName является объектом:

if (codeName && codeName instanceof Object) {
  /* action when codeName != null and Object */
}
0 голосов
/ 09 декабря 2010
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

0 голосов
/ 09 декабря 2010
<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);
}
0 голосов
/ 09 декабря 2010

В рубине nil эквивалентно false.

Поэтому попробуйте проверить только:

if codeName

0 голосов
/ 09 декабря 2010

Я не делаю много JS-кодирования, но, похоже, проблема в вашем [i].Насколько я знаю, [] используется для доступа к полю массива, а у вас нет массива.Просто используйте «код» + я

0 голосов
/ 09 декабря 2010

Я не знаю, что такое document, но вы можете попробовать что-то вроде

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

так что тестируйте, если он существует до того, как вы его используете ...

0 голосов
/ 09 декабря 2010

Может быть, попробовать проверить, что ваш объект наследует от типа, который нужен вашей функции?Как это:

if(codeName is String)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...