将变量赋给document.getElementById()。Innerhtml不起作用

时间:2014-02-18 08:18:38

标签: javascript

请参阅以下代码:

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的新手。

4 个答案:

答案 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上尝试了下面的片段 我发现:

  1. var MessageElement = document.getElementById(“happy”) - 指定元素(在我的示例中为http://www.microsoft.com/
  2. alert(m)因此显示 - http://www.microsoft.com/
  3. m.innerHTML =“Atul” - 将Atul分配给元素。
  4. 但是,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> 
    
  5. 谢谢菲利克斯:)