为什么会提示Uncaught TypeError: Failed to execute 'appendChild' on 'Node'

兜里有米 2017-07-13 03:42:58
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Jay Skript And The Domsters: Tour dates</title>
<script src="scripts/modernizr-1.6.min.js"></script>
<link rel="stylesheet" media="screen" href="styles/basic.css" />
</head>
<body>
<header>
<img src="images/logo.JPG" alt="Jay Skript and the Domsters" />
<nav>
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="photos.html">Photos</a></li>
<li><a href="live.html">Live</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</nav>
</header>
<article>
<h1>Tour dates</h1>
<table summary="when and where you can see the band">
<thead>
<tr>
<th>Date</th>
<th>City</th>
<th>Venue</th>
</tr>
</thead>
<tbody>
<tr>
<td>June 9th</td>
<td>Portland, <abbr title="Oregon">OR</abbr></td>
<td>Crystal Ballroom</td>
</tr>
<tr>
<td>June 10th</td>
<td>Seattle, <abbr title="Washington">WA</abbr></td>
<td>Crocodile Cafe</td>
</tr>
<tr>
<td>June 12th</td>
<td>Sacramento, <abbr title="California">CA</abbr></td>
<td>Torch Club</td>
</tr>
<tr>
<td>June 17th</td>
<td>Austin, <abbr title="Texas">TX</abbr></td>
<td>Speakeasy</td>
</tr>
</tbody>
</table>
</article>
<script src="scripts/global.js"></script>
</body>
</html>

function displayAbbreviations(){
//获取article元素中所有的abbr元素
var articles=document.getElementsByTagName("article");
if(articles.length==0)return false;
var tables=articles[0].getElementsByTagName("table");
if(tables.length==0)return false;
var abbrs=tables[0].getElementsByTagName("abbr");
if(abbrs.length==0)return false;
//创建自定义列表
var dl=document.createElement("dl");
//遍历
for(var i=0;i<abbrs.length;i++){
//创建dt,dd元素
var dt=document.createElement("dt");
var dd=document.createElement("dd");
var dt_text=abbrs[i].firstChild.nodeValue;
var dd_text=abbrs[i].getAttribute("title");
dt.appendChild(dt_text);
dd.appendChild(dd_text);
dl.appendChild(dt);
dl.appendChild(dd);
}
insertAfter(dl,tables);
}
addLoadEvent(displayAbbreviations);

我想问一下 为什么我打开chrome的F12以后 会提示出现
Uncaught TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.
at displayAbbreviations (global.js:225)
就是说
dt.appendChild(dt_text);
这段代码里面的dt_text不是节点类型。这是为什么?
abbrs[i].firstChild.nodeValue
明明可以获得值。哪里错了呢


...全文
2501 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
2017-07-14
  • 打赏
  • 举报
回复
把字符串转成文本节点 var dt_text=document.createTextNode(abbrs[i].firstChild.nodeValue);
___紫菜 2017-07-13
  • 打赏
  • 举报
回复
dt_text和dd_text是字符串不是节点,添加字符串就直接用.value赋值吧
我想要实现动态向tbody中动态插入一行数据,写了如下代码:html:

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧

姓名 年龄 性别 操作