我做错了什么但是什么!我已经看了一百遍。出于某种原因,它不是从文档中检索对象。这是我的索引和Javascript源:
var blinkOn =false;
var blinkObj=document.getElementById("blink");
function blinkCursor() {
if (blinkOn)
{
blinkObj.style.display="none";
} else {
blinkObj.style.display="inline";
}
blinkOn=!blinkOn;
setTimeout("blinkCursor()",500);
}
blinkCursor();
INDEX:
<html>
<head>
<title>
CMD.exe
</title>
<link rel="stylesheet" type="text/css" href="cmd.css" />
<script language="JavaScript" SRC="cmd.js"></script>
</head>
<body>
<span id="content">></span><span style="display:none;" id="blink" >|</span>
</body>
</html>
任何帮助都会有很多帮助! (好吧......等等......呃:p)
答案 0 :(得分:4)
您需要使用onload
事件或将脚本内联到主体中,然后放在元素后面。这是因为当加载<head>
中的Javascript时,完整的DOM尚不可用,因此无法看到元素。
答案 1 :(得分:3)
不要在全局范围内获取元素,而是在函数中获取引用。如果在元素不存在时调用函数,则可以防止函数失败。
您也可以从body :: onLoad
/ onDomReady
调用此内容,具体取决于框架/首选项。
function blinkCursor() {
var blinkObj=document.getElementById("blink");
if (blinkObj) {
blinkObj.style.display=(blinkObj.style.display == "none") ? 'inline' : 'none';
}
}
function stopBlink() {
clearInterval(blinkInterval);
}
var blinkInterval = setInterval(blinkCursor, 500);
另外,不要将setTimeout
/ setInterval
传递给字符串,而是将其传递给函数。
答案 2 :(得分:1)
您的问题是您的JavaScript在解释HTML之前正在执行 - DOM尚未加载。
虽然我建议您使用类似jQuery的东西来确保文档准备就绪,但是如果没有它,问题就解决了:
<script type="text/javascript">
function blinkCursor() {
var blinkObj=document.getElementById("blink");
blinkObj.style.display = (blinkObj.style.display == "none")? "inline" : "none";
setTimeout("blinkCursor()",500);
}
setTimeout("blinkCursor()",500);
</script>