2012-12-13 2 views
2

Следующий код возвращает ошибку несоответствия типов в IE9.node.setAttribute ('attName', null) возвращает тип несоответствия

node.setAttribute('attributeName',null); 

но

node.setAttribute('attributeName',undefined) doesn't give an error. 

И это тоже хорошо:

node.setAttribute('attributeName','null'); 

Любая идея, почему это может происходить и Что хороший способ, чтобы исправить это.

Одно из решений состоит в проверке,

if (attributeVal === null){ 
     attributeVal = 'null'; 
}, 
node.setAttribute('attributeName',attributeVal); 

Любые предложения?

+0

некоторые типы узлов не принимают атрибуты. Проверьте типы до того, как вы установили свой атрибут 'name' –

+1

. Обратите внимание, что второй параметр ['setAttribute'] (http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68F082) должна быть строкой, а не псевдообъектом, что, вероятно, связано с тем, что вы получаете несоответствие типа. – RobG

ответ

0

Если вы хотите удалить атрибут, не используйте setAttribute(name, null), используйте removeAttribute(name).

Я не уверен, почему вы хотите установить значения фальшивки, я бы предположил, что вы либо хотите что-то установить, либо удалить атрибут. Так что-то вроде:

attributeVal ? 
    node.setAttribute(attributeName, attributeVal) : 
    node.removeAttribute(attributeName); 
+0

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