Javascript document.getElementById ("id"). Значение, возвращающее ноль вместо пустой строки, когда элемент является пустым текстовым полем - PullRequest
8 голосов
/ 27 июня 2011

У меня есть элемент текстового поля, к значению которого я пытаюсь получить доступ, используя document.getElementById("id-name").value. Я считаю, что вызов возвращает пустую строку вместо нуля. Тип данных возвращаемого значения - все еще строка. Является ли null строковым значением?

<input type="text" value="" id="mytext"> - это текстовое поле, значение которого я пытаюсь получить, используя var mytextvalue = document.getElementById("mytext").value;

Ответы [ 8 ]

7 голосов
/ 27 июня 2011

Размещение вашего HTML может немного помочь. Вместо этого вы можете сначала получить элемент, а затем проверить, является ли он пустым или нет, и затем запросить его значение, а не просто запросить значение напрямую, не зная, виден ли элемент в HTML или нет.

element1 = document.getElementById(id);

if(element1 != null)
{
    //code to set the value variable.
}
4 голосов
/ 21 августа 2014

Кстати, это может произойти, если вы используете атрибут html type = "number" в своем входном теге.Ввод не-номера очистит его до того, как ваш скрипт узнает, что происходит.

2 голосов
/ 09 июня 2015

Для вашего кода

var mytextvalue = document.getElementById("mytext");

mytextvalue будет содержать null, если у вас есть оператор document.write() перед этим кодом.Поэтому удалите оператор document.write, и вы должны получить правильный текстовый объект в переменной mytextvalue.

Это вызвано document.write изменением документа.

1 голос
/ 27 ноября 2012
try this...    
<script type="text/javascript">
    function test(){
    var av=document.getElementById("mytext").value;
    alert(av);
    }
    </script>

    <input type="text" value="" id="mytext">
    <input type="button" onclick="test()" value="go" />
1 голос
/ 15 декабря 2011

Я думаю, что текстовое поле, к которому вы пытаетесь получить доступ, еще не загружено на страницу во время выполнения вашего javascript.

, т. Е. Чтобы Javascript мог читать текстовое поле из DOMстраницы, текстовое поле должно быть доступно как элемент.Если javascript вызывается до того, как текстовое поле будет записано на странице, текстовое поле не будет отображаться и будет возвращено значение NULL.

1 голос
/ 27 июня 2011

Это демо правильно возвращается для меня в Chrome 14, FF3 и FF5 (с Firebug):

var mytextvalue = document.getElementById("mytext").value;
console.log(mytextvalue == ''); // true
console.log(mytextvalue == null); // false

и изменением console.log наalert, я все еще получаю желаемый вывод в IE6.

1 голос
/ 27 июня 2011

Пожалуйста, отметьте эту скрипку и дайте мне знать, если вы получите предупреждение о нулевом значенииЯ скопировал ваш код туда и добавил пару предупреждений.Как и другие, я также не вижу возвращаемого значения null, я получаю пустую строку.Какой браузер вы используете?

0 голосов
/ 27 июня 2011

Похоже, вы пропустили атрибут value в разметке HTML.

Добавьте это как <input value="" ... >.

...