Получение нулевого или нет объектной ошибки в коде JavaScript - PullRequest
0 голосов
/ 18 января 2011

Вот строка, которая вызывает null или нет объектную ошибку

if(frm.elements["hdn_retain"+indexval].value==""){
   ....
} else {
   ....
}

Ответы [ 4 ]

0 голосов
/ 15 июля 2011

вы можете использовать этот метод утилиты getProperty, который я всегда использую, чтобы убедиться, что я вернул вложенное пространство имен, не беспокоясь о том, определено ли что-либо:

function getProperty(ns, obj) {
    var nsArray = ns.split('.'), 
        i       = 0, 
        nsLen   = nsArray.length;
    while (nsLen > 0) {
        var newNs = nsArray.shift();
        if (obj[newNs]) {
            obj = obj[newNs];
        } else { 
            return false;
        }
        nsLen = nsArray.length;
    }
    return obj;
};

var index = "hdn_retain" + indexval;
    // the following `value` will come back as a valid object/value or a false
    value = getProperty('elements.' + index + '.value', frm); 
if (value) {
  // do whatever
} else {
  // do not whatever
}

это может быть применено не только к этой ситуации, но и к любой другой ситуации, которую вам необходимо убедиться, что определенное пространство имен доступно перед использованием.

0 голосов
/ 18 января 2011

Либо frm, либо frm.elements["hdn_retain"+indexval] не является допустимым объектом (не существует в dom), и поэтому вы не можете получить доступ к его свойству.

Вы можете попробовать что-то вроде:

if(frm.elements["hdn_retain"+indexval] && frm.elements["hdn_retain"+indexval].value==""){
0 голосов
/ 18 января 2011

Ниже приводится результат оповещения:

alert("frm:::"+frm);
alert("frm elements::::"+frm.elements);
alert("frm hdn_retain :: "+frm.elements["hdn_retain"+indexval]);

frm:::[object]
frm elements::::[object]
frm hdn_retain :: undefined
0 голосов
/ 18 января 2011

frm.elements ["hdn_retain" + indexval] может быть нулевым объектом.Таким образом, он будет иметь ошибку при получении значения.Вы можете проверить frm.elements ["hdn_retain" + indexval], если он равен нулю.

if(frm.elements["hdn_retain"+indexval] != null && frm.elements["hdn_retain"+indexval].value=="")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...