2014-02-13 5 views
0

Этот код должен работать .. Но это не так и я получаю сообщение об ошибке, говорящее:Почему этот код не работает?

Uncaught TypeError: Cannot set property 'innerHTML' of null 

Это не первый раз, когда я получил эту ошибку, и я до сих пор не понимаю. ..

HTML:

<!DOCTYPE html> 
<html> 
<head> 
<title></title> 

<link rel="stylesheet" type="text/css" href="mycss.css"> 
<script src="myjavascript2.js" type="text/javascript"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 

</head> 

<body> 

<button onclick="myFunction()">Play</button> 
<p id="test"></p> 



</body> 
</html> 

JavaScript:

var things = ['rock','paper','scissors']; 

function myFunction() { 

var i = Math.floor(Math.random()*things.length)); 
document.getElementById("test"+(i+1)).innerHTML=things[i]; 
} 
+5

Это не работает, потому что вы не имеете элемент 'ID =«testN» 'где N - результат' i + 1'. –

+1

getElementById ("test" + (i + 1)) у вас есть только id = "test" – Huangism

+2

Где находятся те 'test1',' test2', 'test3' элементы в DOM? – Bergi

ответ

1

It не выглядит, как у вас есть какие-либо элементы с идентификаторами, как test1, test2 и т.д.

1

Элемент ссылается ваш код не существует в DOM:

document.getElementById("test"+(i+1)) 

У вас в HTML:

<p id="test"></p> 

Ваш код ищет «test3»

0

Если вы хотите, чтобы один элемент, чтобы изменить текст, иметь это в качестве JavaScript:

document.getElementById("test").innerHTML=things[i]; 

Если вы хотите идти идти на несколько элементов, то в вашем HTML заменить <p id="test"></p> с:

<p id="test1"></p> 
<p id="test2"></p> 
<p id="test3"></p> 
Смежные вопросы