请参阅以下代码:
var text=["yuppie", "kkkoseh", "watchdog"];
var messageIndex=0;
function looptext (){
var MessageElement= document.getElementById("happy").innerHTML
var Message=text[messageIndex];
MessageElement=Message;
messageIndex++;
if(messageIndex>=text.length){
messageIndex=0;
}
}
window.onload = function() {
setInterval(looptext, 1000);
};
它不起作用。
但是,当我在变量.innerhtml
删除MessageElement
并设置MessageElement.innerHtml= Message
时,它就可以了。
为什么会这样?
对不起,我是一个学习JavaScript的新手。
答案 0 :(得分:4)
因为这就是变量和值在JavaScript中的工作方式。想象变量就像容器一样。与
var MessageElement = document.getElementById("happy").innerHTML
容器MessageElement
将包含字符串。稍后,用
MessageElement = Message;
您只需在容器中放入一个新值,覆盖容器的先前值/内容。但它对前一个值的来源没有任何影响。
但是当我在变量MessageElement中删除.innerhtml并设置MessageElement.innerHtml = Message时,它可以工作。
现在变量包含对DOM元素的引用和
MessageElement.innerHtml = Message
不为变量分配一个新值(不在容器中放置新值),使用变量的值(容器)
答案 1 :(得分:0)
innerHTML返回一个字符串而不是指向document.getElementById(“happy”)文本节点的指针。
答案 2 :(得分:0)
试试这个
var text=["yuppie", "kkkoseh", "watchdog"];
var messageIndex=0;
function looptext (){
document.getElementById("happy").innerHTML = text[messageIndex];
messageIndex++;
if(messageIndex>=text.length){
messageIndex=0;
}
}
window.onload = function() {
setInterval(looptext, 1000);
};
答案 3 :(得分:0)
@Felix King是正确的。
为了测试它的实际行为,我自己在W3Schools上尝试了下面的片段 我发现:
但是,m的值仍然是 http://www.microsoft.com/ ,正如Felix正确地说 - 'MessageElement.innerHtml = Message,没有为变量赋值。'< / p>
<html>
<head>
<script>
function changeLink()
{
var m = document.getElementById("myAnchor"); //assigns http://www.microsoft.com/
alert(m); //
m.innerHTML = "Atul"
alert(document.getElementById("myAnchor").innerHTML + " new");
document.getElementById('myAnchor').innerHTML=m;
}
</script>
</head>
<body>
<a id="myAnchor" href="http://www.microsoft.com">Microsoft</a>
<input type="button" onclick="changeLink()" value="Change link">
</body>
</html>
谢谢菲利克斯:)