`

javascript动态增加行的错误 (问题比较经典)

阅读更多
<html>  
<head>  
<title>动态添加html元素</title>  
<script type="text/javascript">  
<!--  
var textNumber = 1;  
function addCheckDetail(form,afterElement){  
    textNumber++;  
    //创建列表标签  
    var label2=document.createElement("label");  
    label2.appendChild(document.createTextNode("问题所属方面:"));  
    var select=document.createElement("select");   
    select.setAttribute("select","select"+textNumber);  
    select.setAttribute("size","1");  
    select.setAttribute("id","select"+textNumber);  
    var option1=document.createElement("option");  
    option1.setAttribute("value","1");  
    option1.appendChild(document.createTextNode("方面一"));  
    var option2=document.createElement("option");  
    option2.setAttribute("value","2");  
    option2.appendChild(document.createTextNode("方面二"));      
    label2.appendChild(select);  
    select.appendChild(option1);  
    select.appendChild(option2);  
    form.insertBefore(label2,afterElement);  
      
    // 创建文本标签  
    var label1 = document.createElement("label");  
    // 创建文本框  
    var textField = document.createElement("textarea");  
    textField.setAttribute("name","txt"+textNumber);  
    textField.setAttribute("cols",80);  
    textField.setAttribute("rows",3);  
    textField.setAttribute("id","txt"+textNumber);  
    // 增加标签文本注释  
    label1.appendChild(document.createTextNode("问题描述"+textNumber+":"));  
    // 把textField放入标签中  
    label1.appendChild(textField);  
    // 把所有的这些增加到form中  
    form.insertBefore(label1,afterElement);  
}  
function removeCheckDetail(form,afterElement){  
    // 假如有文本框个数超过一个  
    if (textNumber > 1) {   
        // 删除最后一个添加的文本框  
        form.removeChild(document.getElementById("select"+textNumber).parentNode);  
        form.removeChild(document.getElementById("txt"+textNumber).parentNode);  
        textNumber--;  
    }  
}  
//-->  
</script>  
<style type="text/css">  
<!--  
label {  
  display:block;  
  margin:.25em 0em;  
}  
-->  
</style>  
</head>  
<body>  
<form id="myForm" method="get" action="./" /> 
<table><tbody>  
        <label>问题所属方面:  
        <select name="select" size="1" id="">  
          <option value="1">问题一</option>  
          <option value="2">问题二</option>  
        </select>  
        </label>  
        <label>问题描述1:<textarea name="txt1" cols="80" rows="3"></textarea></label>  
          
        <p>  
          <input type="button" value="添加一个问题" onclick="addCheckDetail(this.form,this.parentNode)" />  
          <input type="button" value="删除最后一个问题" onclick="removeCheckDetail(this.form)" />  
        </p>  
        <p><input type="Submit" value="保存" /></p> 
</tbody></table>  
 
</form>  
</body>  
</html> 
我想用javascript动态增加行,当form中没有table标签时是可以增加的,像上面增加了table标签就出现错误了,请问各位该如何解决?

   
=======================================
解决方案:
由于form.insertBefore是将指定节点添加到form的直接子节点上,由于form中只有一个table,没有afterElement这个直接子节点.所以会报错.
input标签的parentNode即p标签,它的直接父结点是TBODY标签.所以只能用TBodyElement.insertBefore.进行插入.


Js代码
form.insertBefore(label2,afterElement);  
form.insertBefore(label1,afterElement); 

两句改为:
afterElement.parentNode.insertBefore(label2,afterElement);  
afterElement.parentNode.insertBefore(label1,afterElement); 
分享到:
评论

相关推荐

    程序天下:JavaScript实例自学手册

    9.9 JavaScript遍历table的行和列 9.10 表格按回车自动生成新行 9.11 单击单元格背景变色 9.12 单击表格某行后其他行隐藏 9.13 单击表头实现表格排序 9.14 单击单元格显示行的详细信息 9.15 表格设置为“100%”时...

    JavaScript入门篇,JavaScript基础知识

    JavaScript是一种脚本语言,主要用于增加网站的交互性,如制作动态样式、动画,以及在用户按下按钮或提交表单数据时提供响应。它是目前世界上最流行的编程语言之一,不仅用于网页开发,还可以驱动许多基于HTML5的...

    JavaScript修改css样式style动态改变元素样式

    需要注意的是: 注意大小写: javascript对大小写十分敏感,className不能够把“N”写成“n”,cssText也不能够把“T”写成“t”,否则无法实现效果。 调用方法: 如果改变className,则事先在样式表中申明类,但...

    《程序天下:JavaScript实例自学手册》光盘源码

    9.9 JavaScript遍历table的行和列 9.10 表格按回车自动生成新行 9.11 单击单元格背景变色 9.12 单击表格某行后其他行隐藏 9.13 单击表头实现表格排序 9.14 单击单元格显示行的详细信息 9.15 表格设置为“100%”时...

    JavaScript权威指南(第6版)

    本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也...

    jshint:JSHint是一个工具,可帮助检测JavaScript代码中的错误和潜在问题

    JSHint,JavaScript的静态代码分析工具[•••••• ] JSHint是社区驱动的工具,可检测JavaScript代码中的错误和潜在问题。 由于JSHint非常灵活,因此您可以在希望代码执行的环境中轻松调整它。 JSHint是公开可用的...

    JavaScript权威指南(第6版)(附源码)

    本书第6版涵盖了HTML5和ECMAScript5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习,也适合...

    JavaScript权威指南(第6版)中文文字版

    本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增的章节包括 jQuery、服务器端 JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习...

    JavaScript模式中文[pdf] 百度云

     不要增加内置的原型  SWitch模式  避免使用隐式类型转换  使用parseInt()的数值约定  编码约定  命名约定  编写注释  编写API文档  编写可读性强的代码  同行互查  在正式发布时精简代码  运行JSLint ...

    JavaScript权威指南(第6版)(中文版)

    本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也...

    Professional JavaScript for Web Developers.pdf

    这一点,再加上移动web流量的增加,对响应性、动态web设计的需求不断增加,意味着所有web开发人员都需要更新他们的技能——这本书是您快速、相关指导的理想资源。 通过ES2019获取ECMAScript的最新信息,包括类、承诺...

    JSHint:一种有助于检测错误和 JavaScript 代码中的工具-开源

    JSHint 是一个社区驱动的工具,用于检测 JavaScript 代码中的错误和潜在问题。 由于 JSHint 非常灵活,您可以在您期望代码执行的环境中轻松调整它。 JSHint 是公开可用的,并且将始终保持这种状态。 该项目旨在帮助 ...

    Speaking JavaScript - Dr. Axel Rauschmayer.epub

    在原版基础上,增加了代码高亮,美化了字体.订正一些拼写错误.

    JavaScript权威指南(第6版)

    本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增的章节包括 jQuery、服务器端 JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习...

    javascript 蛋糕商城 静态页面

    javascript 蛋糕商城 静态页面 1. 购物车 (1) 商品数量增加减少。会对应修改该商品的价格(单价*数量) (2) 选择商品会修改订单总金额。选择的商品价格相加 (3) 删除时会寻找该商品的节点进行删除 (4) 点击多选会...

    FireFox Chrome IE浏览器调试JavaScript

    控制台能够显示当前页面中的javascript错误以及警告,并提示出错的文件和行号,方便调试,这些错误提示比起浏览器本身提供的错误提示更加 详细且具有参考价值。而且在调试Ajax应用的时候也是特别有用,你能够在...

    JavaScript权威指南(第6版) 中文版

    本书第6版涵盖了 html5 和 ecmascript 5,很多章节完全重写,增加了当今 web 开发的最佳实践的内容,新增的章节包括 jQuery、服务器端 JavaScript、图形编程以及JavaScript式的面向对象。本书不仅适合初学者系统学习...

    JavaScript模式 斯托扬·斯特凡洛夫 著

    不要增加内置的原型 SWitch模式 避免使用隐式类型转换 使用pa eInt()的数值约定 编码约定 命名约定 编写注释 编写API文档 编写可读性强的代码 同行互查 在正式发布时精简代码 运行JSLint 小结 第3章 字面量和构造...

    JavaScript甘特图控件DhtmlxGantt.zip

    8、增加了2行TOOLBAR,“项目管理”和“任务管理”。 实现右键菜单的各类调用方法。 9、鼠标移动每一任务,会有底色变化,增加了单击任务和项目的方法。 10、显示错误信息时,增加了任务名称显示。 11、“设置开始...

Global site tag (gtag.js) - Google Analytics