2009-11-03 19 views
0

這是我可以創建的最佳示例。 innerHTML的值出現在由onload函數觸發的警報中。當它碰到document.write時,相同的innerHTML將變爲null。關於如何讓innerHTML出現在onload函數之外的任何想法?我已經嘗試過全局變量,甚至將值複製到隱藏的輸入,它仍然爲空。Javascript:body onload事件,變量存在,但之後,它變得不明確

<html> 

<head> 

<script language='javascript'> 
function onload_function() { 
    alert(document.getElementById("sample_size").innerHTML); 
} 

document.write("this is a test: " + document.getElementById("sample_size").innerHTML); 
</script> 

</head> 

<body onload='onload_function()'> 
<form name='form_test'> 
    <table border='0' cellpadding='0' cellspacing='0'> 
    <tr> 
    <td id='sample_size' style='display:none'>16</td> 
    </tr> 
    </table> 
</form> 
</body> 

</html> 
+0

請告訴我們的源代碼。 – SLaks 2009-11-03 02:14:29

回答

0

,而不是使用全局變量嘗試把它變成一個隱藏的輸入元素有唯一的ID,所以你可以使用getElementByID

+0

這是一個可怕的想法。你在交易設計方面,這只是一個小問題,因爲在實施過程中相當慢(相比之下)的工作。 – 2009-11-03 05:36:47

+0

現在他添加了源代碼,我還有其他東西要繼續。感謝您的反對票。 – 2009-11-03 15:46:58

0

沒有源代碼中的其他功能得到它,我們真的不能幫你。

這裏有三種可能性。

該變量可能實際上不是全局的。
您是否在函數內聲明瞭var關鍵字?

該變量可能被分配到其他地方的undefined

您可能拼寫錯了名字。

檢查Firebug中的DOM選項卡,看看該變量是否存在以及它的值是什麼。

1

你應該嘗試添加腳本:

<script language='javascript'> 
document.write("this is a test: " + document.getElementById("sample_size").innerHTML); 
</script> 

在HTML <body>而不是在<head>。當在頁眉中評估JavaScript時,值/頁面尚未加載。

0

你不能寫tdinnerHTMLonload因爲td尚不存在,直到onload火災。

如果你把電話給你document.write的onload函數內部它的工作原理:

<script language='javascript'> 
function onload_function() { 
    alert(document.getElementById("sample_size").innerHTML); 
    document.write("this is a test: " + document.getElementById("sample_size").innerHTML); 
} 
</script> 
相關問題