Javascript通过Id获取元素并设置值

我有一个JavaScript函数,我传递一个参数。 该参数表示我的网页中的元素(隐藏字段)的ID。 我想改变这个元素的值。

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

当我这样做时,我得到一个错误,该值无法设置,因为该对象为空。 但是我知道这个对象不是null,因为我在浏览器生成的html代码中看到它。 不pipe怎么说,我试着下面的代码进行debugging

 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' 

我该如何解决这个问题

编辑

我为其设置值的元素是隐藏的字段,该ID是dynamic的,当页面加载。 我已经尝试在$(document).ready函数中添加这个,但没有工作

如果myFunc(variables)在textarea呈现给页面之前执行,您将得到nullexception错误。

 <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或者$(document).ready函数。 希望这是有帮助的。

特定

 <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应该用引号括起来。