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


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

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

когда я делаю это, я получаю сообщение об ошибке, что значение не может быть установлено, поскольку объект имеет значение null. Но я знаю, что объект не является нулевым, потому что я вижу его в 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'

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

EDIT

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

5 54

5 ответов:

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

<html>
    <head>
    <title>index</title>
    <script type="text/javascript">
        function myFunc(variable){
            var s = document.getElementById(variable);
            s.value = "new value";
        }   
        myFunc("id1");
    </script>
    </head>
    <body>
        <textarea id="id1"></textarea>
    </body>
</html>
//Error message: Cannot set property 'value' of null 

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

дано

<div id="This-is-the-real-id"></div>

затем

function setText(id,newvalue) {
  var s= document.getElementById(id);
  s.innerHTML = newvalue;

}    
window.onload=function() {
  setText("This-is-the-real-id","Hello there");
}

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


дано

<input id="This-is-the-real-id" type="text" value="">

затем

function setValue(id,newvalue) {
  var s= document.getElementById(id);
  s.value = newvalue;

}    
window.onload=function() {
  setValue("This-is-the-real-id","Hello there");
}

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

<html>
<head>
<script>
function updateTextarea(element)
{
document.getElementById(element).innerText = document.getElementById("ment").value;
}
</script>
</head>
<body>

<input type="text" value="Enter your text here." id = "ment" style = " border: 1px solid grey; margin-bottom: 4px;"  

onKeyUp="updateTextarea('myDiv')" />

<br>

<textarea id="myDiv" ></textarea>

</body>
</html>

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

<html>
<head>
<script>
function displayResult(element)
{
document.getElementById(element).value = 'hi';
}
</script>
</head>
<body>

<textarea id="myTextarea" cols="20">
BYE
</textarea>
<br>

<button type="button" onclick="displayResult('myTextarea')">Change</button>

</body>
</html>

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

<input type="button" onclick="javascript: myFunc(myID)" value="button"/>

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