2011-07-31 49 views
0

我有一個問題,試圖寫一個字符串變量的值到特定div的DOM中的特定元素。document.getElementById(「xxxxx」)。innerHTML根本不工作?

比方說遊戲= TEN

document.getElementById("game").innerHTML=game; 

不寫入:

<div id="game"></div> 

問題是與下面的代碼我有一個腳本,並在該腳本結束時,我可以記錄。寫(遊戲),它工作正常,但我不能寫入到div?也許我正在嘗試做這個錯誤。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 
<body> 
<!--<form id="teamSelect"onsubmit="return function games();"><select> 
    <option value="TEN">Tennessee</option> 
    <option value="GB">Green Bay</option> 
    </select> 
    <input type="submit" name="Submit" /> 
    </form> 
--> 

<script> 
var jsonString = '{"ss":[["Thu","7:30","Pregame",,"JAC",,"NE",,,,"55425",,"PRE1","2011"],' + 
    '["Thu","7:30","Pregame",,"BAL",,"PHI",,,,"55424",,"PRE1","2011"],' + 
    '["Thu","8:00","Pregame",,"SEA",,"SD",,,,"55423",,"PRE1","2011"],' + 
    '["Thu","8:30","Pregame",,"DEN",,"DAL",,,,"55426",,"PRE1","2011"],' + 
    '["Thu","10:00","Pregame",,"ARI",,"OAK",,,,"55427",,"PRE1","2011"],' + 
    '["Fri","7:30","Pregame",,"MIA",,"ATL",,,,"55430",,"PRE1","2011"],' + 
    '["Fri","7:30","Pregame",,"CIN",,"DET",,,,"55429",,"PRE1","2011"],' + 
    '["Fri","7:30","Pregame",,"PIT",,"WAS",,,,"55431",,"PRE1","2011"],' + 
    '["Fri","8:00","Pregame",,"TB",,"KC",,,,"55428",,"PRE1","2011"],' + 
    '["Fri","8:00","Pregame",,"SF",,"NO",,,,"55432",,"PRE1","2011"],' + 
    '["Sat","7:30","Pregame",,"GB",,"CLE",,,,"55433",,"PRE1","2011"],' + 
    '["Sat","8:00","Pregame",,"NYG",,"CAR",,,,"55437",,"PRE1","2011"],' + 
    '["Sat","8:00","Pregame",,"BUF",,"CHI",,,,"55434",,"PRE1","2011"],' + 
    '["Sat","8:00","Pregame",,"IND",,"STL",,,,"55435",,"PRE1","2011"],' + 
    '["Sat","8:00","Pregame",,"MIN",,"TEN",,,,"55436",,"PRE1","2011"],' + 
    '["Mon","8:00","Pregame",,"NYJ",,"HOU",,,,"55438",,"PRE1","2011"]]}'; 

//var jsonString = '{"test": "test1"}';  

for (i=0; i<15;i++) { 
    if ("TEN" == eval('(' + jsonString + ')').ss[i][6] || "TEN" == eval('(' + jsonString + ')').ss[i][4]) { 
    var game=(eval('('+jsonString+')').ss[i][6] + ' vs ' + eval('('+jsonString+')').ss[i][4]); 
    var day=(eval('('+jsonString+')').ss[i][0] + ' at ' + eval('('+jsonString+')').ss[i][1]); 
    } 
} 
document.write(game); 
document.getElementById("game").innerHTML=game; 
</script> 

<div id="game" style="font-family:Arial, Helvetica, sans-serif; font-size:12px; line-height:16px">hello</divЮ 
</body> 
</html> 

回答

3

在執行該腳本時,如果您正在查找該元素,它仍然不存在,因爲它稍後會出現。

準確地說,它尚未被解析並添加到DOM中。

因此,將腳本移動到HTML文件的底部(至少在元素下面)。

如果您正在使用某種庫,它也可以很容易地解決:例如,對於jQuery,將所有內容放在$(function() { ... }塊內。那樣,直到DOM完全加載它纔會被執行(在這個時候你可以安全地搜索元素)。

-1

,或者您可以使用jqueries

$(document).ready(function(){}); 
3

在當您試圖訪問尚未創建它的#game元素的時刻。 你應該等待onload事件和函數綁定到這個事件:

<script type="text/javascript"> 
function init() { 
    /**your code here**/ 
} 
</script> 

<body onload="init()"> 
<div id="game"></div> 
</body></html> 
0

在init()函數將無法工作,因爲DOM沒有完全加載。要麼你得到自己的jQuery或道場,並使用文檔就緒函數,或將JavaScript塊放在你的HTML文檔的末尾,也就是在關閉正文標籤之前。

讓自己螢火蟲,並改寫這樣的代碼開頭:

<html> 
<body> 
<div id="myid"></div> 
</body> 
<script language="Javascript"> 
document.getElementByID('myid').innerHTML = .... 
</html> 

相關問題