document.getElementById ("xxxxx"). innerHTML не работает вообще? - PullRequest
0 голосов
/ 31 июля 2011

У меня возникла проблема при попытке записать значение строковой переменной для определенного элемента в DOM в конкретный div.

скажем, игра = ДЕСЯТЬ

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

не пишет:

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

Проблема с кодом ниже У меня есть скрипт, и в конце этого скрипта я могу document.write (игра), и он работает нормально, но я не могу записать его в 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>

Ответы [ 4 ]

3 голосов
/ 31 июля 2011

В тот момент, когда вы пытаетесь получить доступ к элементу #game, он еще не создан.Вам следует дождаться события onload и связать функцию с этим событием:

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

<body onload="init()">
<div id="game"></div>
</body></html>
3 голосов
/ 31 июля 2011

Когда вы выполняете скрипт и ищете элемент, он еще не существует, потому что он появится позже.

Если быть точным, он не был проанализирован и не добавлен в DOMпока что.

Итак, переместите ваши сценарии в конец HTML-файла (по крайней мере, ниже элемента).

Если вы используете какую-то библиотеку, это тоже можно легко решить: дляjQuery, например, поместите все внутри блока $(function() { ... }.Таким образом, до тех пор, пока DOM не загрузится полностью, он будет запущен (и тогда вы сможете безопасно искать элемент).

0 голосов
/ 31 июля 2011

Функция Init () не будет работать, поскольку DOM загружен не полностью. Либо вы получаете jquery или dojo и используете функции готовности документа, либо размещаете блок javascript в конце вашего HTML-документа, то есть перед закрывающим тегом body.

Получите Firebug и перепишите код для начала:

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

Укротитель

0 голосов
/ 31 июля 2011

или вы можете использовать jqueries

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