2016-09-08 6 views
-1

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

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

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

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

+1

if (value) охватывает пустую строку на самом деле – Andrey

+2

Как насчет того, чтобы не использовать недействительные атрибуты вообще, но придерживайтесь [наборов данных] (https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Use_data_attributes) – adeneo

+0

Если вы действительно хотите использовать атрибуты, вы должны проверить [hasAttribute] (https://developer.mozilla.org/en-US/docs/Web/API/Element/hasAttribute). – Prusse

ответ

0

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

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

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

0

Основы использования GetAttribute()

«GetAttribute() возвращает значение указанного атрибута элемента. Если данный атрибут не существует, возвращаемое значение будет либо нулевым или„“(пустая строка), см. Примечания для получения подробной информации. " - MDN Docs

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

1

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

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

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