2015-01-17 3 views
2

Я уверен, что это очевидно для большинства людей, но я почему-то застрял в этом думать. Пожалуйста, будьте добры;)Разница между Element.value === "" и Element.length === 0

я понял, что Element.value возвращает String тогда Element.length возвращает Int, но я до сих пор не уверен, вернутся ли эти два метода один и то же значение (пример).

Игрушка пример

У меня есть следующие поля ввода

<input id="myInput" type="text" value=""> 

и две отдельные функции со следующими методами значение

---method1--- 
var x = document.getElementById("myInput").length; 

---method2--- 
var y = document.getElementById("myInput").value; 

y будет 0, но что бы x значение be? null или 0?

Других слов у

Element.value === "" и Element.length === 0 выражает то же самое?

+3

Они нет. Чтобы получить длину строки, вам нужно попросить «Element.value.length». Элементы DOM не имеют свойства 'length', поэтому вы получаете' undefined'. Если вы получаете номер для 'length', это означает, что вы получили массив (элементов DOM). –

ответ

2

Element.length будет undefined, поскольку это не свойство. Смотрите здесь

var properties = []; 
 
var myObject = document.getElementById("myInput"); 
 
for (var name in myObject) { 
 
    if (myObject.hasOwnProperty(name)) { 
 
    properties.push(name); 
 
    } 
 
} 
 
alert(properties.filter(function(value) { 
 
    return value && value.length > 0 && value[0] == "l"; 
 
}).join(" \n"));
<input id="myInput" type="text" value="">

+0

Спасибо, сейчас очень ясно. –

2

Element.value возвращает строку на элементов, которые позволяют ввод пользователя. Там этот атрибут предоставляется системой . Element.length не является собственностью.

Прочие Объекты in JavaScript do имеют свойство length. Array s и все массивные объекты имеют свойство length. Они возвращают длину массива. Массивным примером является список узлов. Это список элементов. Например, функция getElementsByTagName возвращает список узлов. Вы можете получить длину этого списка, используя length. Строковый объект также имеет свойство length (String.prototype.length). Он возвращает длину строки. (Строка также представляет собой массив). См. Этот пример:

alert("test"[0]); 

Это предупреждение t. Таким образом, вы можете прокручивать строку, как если бы она находилась в массиве.

В заключение: Element.value === "" and Element.length === 0 не то же самое, поскольку они не связаны друг с другом. Element.value === "" и Element.value.length === 0 почти сделать то же самое. Первая проверяет, является ли возвращенная строка пустой, а вторая проверяет длину этой строки. В обоих случаях длина строки равна 0.

+0

Спасибо, что помогли! –

3
var x = document.getElementById("myInput").length; 

Это заявление даст вам undefined.Поскольку длина является свойством массива, Строка и nodeList objects.You не может реализовать свойство длины на HTML объектов.

у будет равен нулю, если вы не введете текст, текст field.Otherwise это даст вам значение помахать написано в тексте field.If вы хотите длина входной строки попытаться x.value.length

+0

Спасибо за полезный ввод! –

Смежные вопросы