cloneNode()和appendChild()的问题。坐等。。。。

Monkey_Online 2012-08-09 12:42:15
我想实现的效果是: 在上传文件时,单击添加按钮能够自动添加一个文件上传域。
js代码: function insertRow(){
var rowindex = document.all("addordel").length;
if(rowindex>=5){
alert("一次只能上传5个文件!");
return false;
}
var obj = document.getElementsByName("addordel") [0].cloneNode(true);
document.all("change").appendChild(obj);
}
添加按钮处的代码:
<button onclick="insertRow()" style="border:1px #000000 solid;background-color:#f0f0f0;">添加</button> 
添加的地方是:
<ul id="change"><li id="addordel" name="addordel">........ </li></ul>
但是现在的效果是,点击添加的时候可以创建,但是只是在鼠标松开的那一瞬间有,接着就没有了,不知道错误在哪里,希望知道的人能够指点一下,不胜感激。。。谢谢。。。
...全文
223 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Monkey_Online 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

估计是event.srcElement在这儿用是不合适的,这个对象指向是触发事件的标签,就是button,
和这个列表是没有关系的。
function delRow(){
var allrows=document.all("addordel");
var rowindex = document.all("addordel").length;
if(rowindex>=2){
docu……
[/Quote]
谢谢,给分了哈,如果有时间麻烦解释下,嘿嘿!!
Monkey_Online 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

估计是event.srcElement在这儿用是不合适的,这个对象指向是触发事件的标签,就是button,
和这个列表是没有关系的。
function delRow(){
var allrows=document.all("addordel");
var rowindex = document.all("addordel").length;
if(rowindex>=2){
docu……
[/Quote]
哇。。。 真的可以哎。。。 嘿嘿, 非常非常感谢,不过你能再详细解释一下吗? 我这一块不是很理解到底为什么??? 谢谢,谢谢。。。
未知数 2012-08-09
  • 打赏
  • 举报
回复
估计是event.srcElement在这儿用是不合适的,这个对象指向是触发事件的标签,就是button,
和这个列表是没有关系的。
function delRow(){
var allrows=document.all("addordel");
var rowindex = document.all("addordel").length;
if(rowindex>=2){
document.getElementById("change").removeChild(allrows[allrows.length-1]);
}
}
改成这样试试
Monkey_Online 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

1.点击时是否有触发后台事件?后台事件会刷新页面,js的更改自然失效;
2.克隆后指定一个新id试试

我认为原因是触发后台事件的可能性很大,因为松开鼠标时出现了但很快消失(刷新的原因?),检查检查有没有什么地方使用了后台事件

刚刚才发现你居然用的button标签,这个标签默认会提交页面,也会造成页面刷新,更改一下:
<button onclick="insertRow()" ty……
[/Quote]
嘿嘿,添加的时候的问题解决了,的确是这个问题,但是删除的时候又不响应了,帮忙看看吧,谢谢:
function delRow(){
var rowindex = document.all("addordel").length;
if(rowindex>=2){
event.srcElement.parentNode.removeNode(true);
}
}
删除时的按钮也改了:<button onclick="delRow()" style="border:1px #000000 solid;background-color:#f0f0f0;" type="button">删除</button> 
未知数 2012-08-09
  • 打赏
  • 举报
回复
1.点击时是否有触发后台事件?后台事件会刷新页面,js的更改自然失效;
2.克隆后指定一个新id试试

我认为原因是触发后台事件的可能性很大,因为松开鼠标时出现了但很快消失(刷新的原因?),检查检查有没有什么地方使用了后台事件

刚刚才发现你居然用的button标签,这个标签默认会提交页面,也会造成页面刷新,更改一下:
<button onclick="insertRow()" type="button" style="border:1px #000000 solid;background-color:#f0f0f0;">添加</button> 
基本能确定是这个原因

87,992

社区成员

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

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