#javascript #html #dom
#javascript #HTML #dom
Вопрос:
Я пишу веб-страницу, и мне нужно отобразить div с некоторым содержимым, когда пользователь нажимает на кнопку. Я написал приведенный ниже код и не понимаю, почему он не работает. Кто-нибудь знает, почему?
Мой код :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso 8859-1" />
<script type="text/javascript">
function traverse(){
output.innerHTML ='Test'; // Nothing happens !
}
function check() {
var keywords = document.getElementById('text').value.split(" ");
for (var i=0; i < keywords.length; i) {
traverse_tree()
}
}
</script>
</head>
<body onload ="init()">
<input id="text" type="text" size="60" value="Type your keywords here" />
<input type="button" value="Display the text 'Test'" onclick="check();" />
<div id="output">
</div>
</body>
</html>
Спасибо,
Бруно
Ответ №1:
Возможно, потому, что вызывается функция, traverse()
и вы вызываете traverse_tree()
?
Комментарии:
1. Не стоит. Я делал подобные вещи много раз. Такую ошибку легко совершить.
Ответ №2:
Кроме того, в вашем методе traverse
вы должны получить элемент, используя document.getElementById('output')
, вместо использования (неопределенной) переменной output
:
то есть:
function traverse(){
document.getElementById('output').innerHTML ='Test';
}
Вы также могли бы ускорить это, кэшируя узел (чтобы избежать вызова getElementById при каждом нажатии кнопки):
// Create a closure by wrapping the cached node in a self-executing
// function to avoid polluting the global namespace
var traverse = (function (nodeId) {
// Cache the node to be updated here
var node = document.getElementById(nodeId);
// This is the function that "traverse()" will call. Return this function,
// which will assign it to the variable traverse.
return function () {
node.innerHTML = 'test';
};
// Execute the function with the id of the node to cache, i.e. output
}('output'));