search

Home  >  Q&A  >  body text

javascript - 给元素的innerHTML赋一个a元素,为什么取到的是a的href值

上代码

 var link = document.createElement("a");
 link.innerText = "http://yyy.com";
 link.href = "http://xxx.com";
 document.body.innerHTML = link; 

我知道正常情况下,给innerHTML赋的应该是一HTML字串,但这里讨论的是这种情况——赋的是一个DOM对象,body里的文字就是a的href值了,请解释下这个赋值的过程,谢谢。

ps: 本人尝试过link.toString(),输出的是href值(会不会跟这个有关?)。

阿神阿神2901 days ago432

reply all(2)I'll reply

  • 迷茫

    迷茫2017-04-10 14:40:05

    是的

    你可以通过重载link的toString()方法来确认

    var link = document.createElement("a");
    link.innerText = "http://yyy.com";
    link.href = "http://xxx.com";
    
    link.toString=function(){
        console.log("toString() called"); 
        return "foobar";
    }
    document.body.innerHTML = link; 
    

    reply
    0
  • 迷茫

    迷茫2017-04-10 14:40:05

    文档里写的很清楚。

    var content = element.innerHTML;
    

    On return, content contains the serialized HTML code describing all of the element's descendants.

    element.innerHTML = content;
    

    Removes all of element's children, parses the content string(把内容解析成字符串toString()) and assigns the resulting nodes as children of the element.

    reply
    0
  • Cancelreply