不改变的原有控件追加内容
追加HTML内容,我在做多文件上传的时候,用到了动态添加上传控件,但是发现一个问题,就是添加新的控件的时候,之前添加的控件的值会变空,我分析了一下原因,是因为我追加控件的时候是用的innerHTML+="内容"的,这样等于把div的控件直接重写了,所以控件会变空。
我找了下资料,知道了insertAdjacentHTML这个方法,用这个方法追加内容,不会改变原有控件的值,但是这个方法FF不使用。于是我继续找,在 http://www.cnitblog.com/yemoo/archive/2007/10/11/34711.html看到了兼容IE和FF的方法,经过试验,确实可以,但是方法太复杂了。这时,从朋友那里得到了一段JS:
function addFile() { var div1 = document.getElementById('divFiles'); input1 = document.createElement("INPUT"); input1.setAttribute("type", "file"); input1.setAttribute("name", "File"); div1.appendChild(input1); div1.appendChild(document.createElement("br")); }
这是用DOM实现的,IE/FF都支持,要比之前的从EXTJS中提取的要精简的多。
PS:前一个方法也写出来
function insertHtml(where, el, html) { where = where.toLowerCase(); if (el.insertAdjacentHTML) { switch (where) { case "beforebegin": el.insertAdjacentHTML('BeforeBegin', html); return el.previousSibling; case "afterbegin": el.insertAdjacentHTML('AfterBegin', html); return el.firstChild; case "beforeend": el.insertAdjacentHTML('BeforeEnd', html); return el.lastChild; case "afterend": el.insertAdjacentHTML('AfterEnd', html); return el.nextSibling; } throw 'Illegal insertion point -> "' + where + '"'; } var range = el.ownerDocument.createRange(); var frag; switch (where) { case "beforebegin": range.setStartBefore(el); frag = range.createContextualFragment(html); el.parentNode.insertBefore(frag, el); return el.previousSibling; case "afterbegin": if (el.firstChild) { range.setStartBefore(el.firstChild); frag = range.createContextualFragment(html); el.insertBefore(frag, el.firstChild); return el.firstChild; } else { el.innerHTML = html; return el.firstChild; } case "beforeend": if (el.lastChild) { range.setStartAfter(el.lastChild); frag = range.createContextualFragment(html); el.appendChild(frag); return el.lastChild; } else { el.innerHTML = html; return el.lastChild; } case "afterend": range.setStartAfter(el); frag = range.createContextualFragment(html); el.parentNode.insertBefore(frag, el.nextSibling); return el.nextSibling; } throw 'Illegal insertion point -> "' + where + '"'; }
posted on 2009-08-17 08:21 Lionheart Zhang 阅读(576) 评论(2) 编辑 收藏 举报