Вопрос:
Следующее не дает никаких изменений, которые я вижу в 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