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

Manji
  • 184

上代码

 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值(会不会跟这个有关?)。

回复
阅读 3.3k
2 个回答
Larvata
  • 1.9k
✓ 已被采纳

是的

你可以通过重载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; 

文档里写的很清楚。

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.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏