Javascript Получить элемент по идентификатору и установить значение

У меня есть функция JavaScript, которой я передаю параметр. Параметр представляет идентификатор элемента (скрытое поле) на моей веб-странице. Я хочу изменить значение этого элемента.

function myFunc(variable){
  var s= document.getElementById(variable);
  s.value = 'New value'
}

Когда я делаю это, я получаю ошибку, что значение не может быть установлено, потому что объект является нулевым. Но я знаю, что объект не является нулевым, потому что я вижу его в HTML-коде, сгенерированном браузером. В любом случае, я попробовал следующий код для отладки

function myFunc(variable){
  var x = variable;
  var y  = 'This-is-the-real-id'
  alert(x + ', ' + y)
  var s= document.getElementById(x);
  s.value = 'New value'
}

Когда появляется предупреждающее сообщение, оба параметра одинаковы, но я все равно получаю сообщение об ошибке. Но все работает нормально, когда я делаю

  var s= document.getElementById('This-is-the-real-id');
  s.value = 'New value'

Как я могу это исправить, пожалуйста

РЕДАКТИРОВАТЬ

Элемент, для которого я устанавливаю значение, является скрытым полем, и идентификатор определяется динамически при загрузке страницы. Я попытался добавить это в функцию $ (document) .ready, но не работает

 jpo01 февр. 2013 г., 16:10
извините, это была опечатка
 Iswanto San01 февр. 2013 г., 16:11
как вы называете myFunc?
 Anthony Grist01 февр. 2013 г., 16:09
Позволять'посмотрим, где вы вызываете функцию (которая, судя по кодумы предоставляем, неимя не имеет)
 Pointy01 февр. 2013 г., 16:12
Когда вы делаете диагностикуalert() или жеconsole.log() в таких случаях, вы должнывсегда оберните значения некоторыми символами маркера, чтобы вы могли определить, есть ли в строках случайные символы пробела. Так:alert("[" + x + "], [" + y + "]");
 mplungjan01 февр. 2013 г., 16:09
что такое переменная? А как вы называете безымянную функцию?
 Dennis01 февр. 2013 г., 16:17
Пожалуйста, покажите пример этого на jsfiddle.net - то, что вы спрашиваете, неэто действительно имеет смысл.

Ответы на вопрос(5)




function updateTextarea(element)
{
document.getElementById(element).innerText = document.getElementById("ment").value;
}






<br>





Я думаю, что проблема в том, как вы вызываете свою функцию JavaScript. Ваш код выглядит так:


myID должен быть заключен в кавычки.

 mplungjan17 окт. 2018 г., 07:56
javascript: ярлык совершенно не нужен

Дано


затем

function setText(id,newvalue) {
  var s= document.getElementById(id);
  s.innerHTML = newvalue;
}    
window.onload=function() { // or window.addEventListener("load",function() {
  setText("This-is-the-real-id","Hello there");
}

будет делать то, что вы хотите

Дано


затем

function setValue(id,newvalue) {
  var s= document.getElementById(id);
  s.value = newvalue;
}    
window.onload=function() {
  setValue("This-is-the-real-id","Hello there");
}

будет делать то, что вы хотите

 jpo01 февр. 2013 г., 16:18
Именно то, что я думал. Но мой идентификатор и установить динамически. Но я использовал ту же идею. Но когда я вызываю функцию, документ не может найти элемент с указанным идентификатором
 mplungjan01 февр. 2013 г., 16:18
Нам нужно увидеть HTML и обработчик событий (onclick или что-то еще)

попробуй как ниже это будет работать ...




function displayResult(element)
{
document.getElementById(element).value = 'hi';
}





BYE

<br>

Change



 jbabey01 февр. 2013 г., 16:19
Встроенные обработчики событий - плохая практика.
Решение Вопроса

Если myFunc (переменная) выполняется до того, как текстовое поле будет отображено на странице, вы получите ошибку исключения NULL.


    
    index
    
        function myFunc(variable){
            var s = document.getElementById(variable);
            s.value = "new value";
        }   
        myFunc("id1");
    
    
    
        
    

//Error message: Cannot set property 'value' of null 

Итак, убедитесь, что ваша текстовая область существует на странице, а затем вызовите myFunc, вы можете использовать функцию window.onload или $ (document) .ready. Надеюсь этополезно

 jpo01 февр. 2013 г., 19:08
Он устанавливается до нажатия кнопки.
 Xiaodan Mao01 февр. 2013 г., 16:47
@jpo Если идентификатор установлен динамически, вы также должны убедиться, что myFunc вызывается после того, как идентификатор установлен. Вы можете попробовать вызвать myFunc в функции, которая устанавливает идентификатор.
 Xiaodan Mao01 февр. 2013 г., 17:11
@jpo Когда вы установите идентификатор textarea? До загрузки страницы или после загрузки страницы? До нажатия кнопки или после нажатия кнопки?
 jpo01 февр. 2013 г., 16:57
Мой код выглядит так @ Html.HiddenFor (m => m.myfield, new {id = "мой ID"}) <тип ввода = "кнопка» OnClick =»JavaScript: myFunc (myID) " значение =»Кнопка "/>.
 Xiaodan Mao02 февр. 2013 г., 04:07
@jpo It 'Странно, myID обернут одинарными кавычками? Или ваш идентификатор не установлен успешно. Вы проверили идентификатор с помощью инструмента веб-разработчика, такого как firebug? Это существует?
 jpo01 февр. 2013 г., 16:58
Функция вызывается только при нажатии кнопки, и это происходит только после загрузки страницы. Как еще можно убедиться, что все происходит до нажатия кнопки?
 jpo01 февр. 2013 г., 16:37
Я создаю скрытое поле, а затем создаю кнопку, которая выполняет функцию, которая устанавливает значение скрытого поля. Однако идентификатор устанавливается динамически. Я попытался добавить эту функцию в функцию $ (document) .ready, но возникает та же проблема.
 Xiaodan Mao01 февр. 2013 г., 17:05
@jpo Inclick = "JavaScript: myFunc (myID) "myID должен быть заключен в одинарные кавычки.

Ваш ответ на вопрос