2013-02-01 47 views
43

我有一個JavaScript函數,我傳遞一個參數。該參數表示我的網頁中元素的標識(隱藏字段)。我想改變這個元素的值。Javascript獲取元素的ID和設置值

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' 

我怎樣才能解決這個問題,請

編輯

對此我設定值的元素是隱藏字段,ID是DET動態,爲頁面加載。我曾嘗試在$(document).ready函數中添加這一點,但沒有奏效

+2

順其自然調用該函數(其中,從您所提供的代碼來看,沒有一個名字)。 –

+0

什麼是變數?你怎麼稱呼這個未命名的功能? – mplungjan

+1

對不起,這是一個錯字 – jpo

回答

43

如果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或$(document).ready函數。 希望它有幫助。

+0

我創建隱藏字段,然後創建執行設置隱藏字段值的函數的按鈕。但是,該ID是動態設置的。我試圖在$(document).ready函數中添加這個函數,但同樣的問題出現了。 – jpo

+0

@jpo如果id是動態設置的,您還應該確保在設置id後調用myFunc。您可以嘗試在設置ID的函數中調用myFunc。 –

+0

我的代碼看起來像這樣@ Html.HiddenFor(m => m.myfield,new {id =「myId」})。 – jpo

11

鑑於

<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"); 
} 

會做你想要

+0

正是我所想的。但我的ID和動態設置。但我用了同樣的想法。但是當我調用函數時,文檔找不到具有指定標識的元素 – jpo

+0

我們需要查看html和事件處理程序(onclick或其他) – mplungjan

1

嘗試像下面將工作什麼...

<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> 
+1

內聯事件處理程序是不好的做法。 – jbabey

4
<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> 
0

我認爲這個問題是你調用你的javascript函數的方式。您的代碼如下所示:

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

myID應該用引號括起來。