Javascript input.value Изменение не отображается в браузере

Вопрос: Следующее не дает никаких изменений, которые я вижу в Chrome или Firefox: var field = document.getElementById( 'input-id' ), nodeName; if ( field !== null ) { nodeName = field.nodeName.toLowerCase(); if( nodeName === 'input' || nodeName === 'textarea' ) { field.value = 'hello'; console.log( field.value ); } } Вот цель:

Вопрос:

Следующее не дает никаких изменений, которые я вижу в Chrome или Firefox:

var field = document.getElementById( ‘input-id’ ), nodeName; if ( field !== null ) { nodeName = field.nodeName.toLowerCase(); if( nodeName === ‘input’ || nodeName === ‘textarea’ ) { field.value = ‘hello’; console.log( field.value ); } }

Вот цель:

<input id=»input-id» name=»input-name» type=»text» required=»required» placeholder=»example»>

Но консоль сообщает правильное значение в обоих. Зачем? Я использую проверенный HTML5. Скрипт перед закрывающим тегом body.

Лучший ответ:

Оказывается, я случайно переписывал входное значение в пустую строку в другом месте скрипта сразу после того, как я установил его с кодом в OP. Мой console.log, находясь в том месте, где он был, схватил значение, прежде чем он был перезаписан, поэтому он сообщил о правильном значении, несмотря на то, что получил другой результат в браузере. Я прошу прощения за то, что вы не опубликовали весь скрипт, но я пытался предложить приведенный пример.

Ответ №1

Вы используете , вместо . Редактируйте свой код, приятель:

var field = document.getElementById( ‘input-id’ ).nodeName; Ответ №2

Поскольку вы уже указали следующее, это, вероятно, не проблема загрузки скрипта:

Скрипт перед закрывающим тегом body.

У вас должно быть несколько элементов с одним и тем же id на странице. Просмотрите свой источник (Ctrl + U в Firefox) и выполните поиск идентификатора ввода. Убедитесь, что только один элемент на странице имеет этот идентификатор.

Вы также можете записать, какой элемент изменяется, добавив следующую строку с другим вызовом console.log:

console.log( field );

Это должно регистрировать весь элемент на консоли и помогать вам отлаживать дальше.

Ответ №3

попробуй это

$(function() { var field = document.getElementById( ‘input-id’ ), nodeName; if ( field !== null ) { nodeName = field.nodeName.toLowerCase(); if( nodeName === ‘input’ || nodeName === ‘textarea’ ) { field.value = ‘hello’; console.log( field.value ); } } });

или поместите свой скрипт в конец страницы.

Причина в том, что он не работает, потому что ваш скрипт выполняется до вашего входного тега render.so поместил его в конец или на событие загрузки тела или если вы используете jquery, а не вставляете в функцию готовности документа

Ответ №4

Ваш скрипт может загружаться перед вашим элементом ввода.

Попробуйте поместить снипп в нижнюю часть страницы.

Ответ №5

Я думаю, что вам не хватает onload function. Вы можете добавить его в <body> как

<body onload=»sumfunction();»>

или в javascript

<script> window.onload = sumfunction; </script>

Вот пример: http://jsbin.com/ezovun/1/edit

Оцените статью
Добавить комментарий