getAttribute возвращает значение, если оно не существует

Я использую setAttribute для хранения некоторой информации об элементе, поэтому позже я могу восстановить значение до его innerHTML. Мой вопрос заключается в том, каким именно будет возвращаемое значение element.getAttribute("attr"), когда атрибут не установлен (существует)?
Кажется, что он возвращает null в chrome (что хорошо для меня), но я читал, что он также может возвращать пустую строку, но Я хочу использовать значение, если установлена ​​пустая строка.

поэтому я не могу сделать это, очевидно:

var value = element.getAttribute("prev_value");
if (value) { // won't cover the empty string case, so I need value != null
}

Есть ли браузеры, которые не возвращают null?


person user3599803    schedule 08.09.2016    source источник
comment
если (значение) на самом деле покрывает пустую строку   -  person Andrey    schedule 08.09.2016
comment
Как насчет того, чтобы вообще не использовать недопустимые атрибуты, а придерживаться наборов данных< /а>   -  person adeneo    schedule 08.09.2016
comment
Вы можете использовать element.hasAttribute(), чтобы проверить, есть ли у элемента атрибут.   -  person Maciej Wiercioch    schedule 08.09.2016


Ответы (3)


Основное использование getAttribute()

"getAttribute() возвращает значение указанного атрибута элемента. Если данный атрибут не существует, возвращаемое значение будет либо нулевым, либо "" (пустая строка); подробности см. в примечаниях. – Документы MDN

Как указал @Maciej, вы должны использовать .hasAttribute(), чтобы вернуть истинное значение.

person Community    schedule 08.09.2016

Вы должны просто использовать typeof и посмотреть, является ли это пустой строкой

var value = element.getAttribute("prev_value");
if (typeof value == "string" && value.length) {
//..do something
}

Но на самом деле if("") возвращает false, как и if(null).

person onewrinkle    schedule 08.09.2016

Element.getAttribute возвращает null или пустую строку, если атрибут не существует.

if (object.getAttribute("prev_value") === null) {
//data attribute doesn't exist
 }else{
 //data attribute exists
}

Internet Explorer, браузеры на основе Gecko, браузеры на основе KHTML и еще не опубликованные версии Opera возвращают значение null.

person Mahi    schedule 08.09.2016