我想知道从html页面动态更新,插入或删除元素的最有效方法。
这样做的结果是,我可以根据用户操作将输入元素更改为div元素,反之亦然。
例如
<form><input type="text" value="Value to save"/></form>
并根据某些事件,我会将其更改为
<form><div>Value to Save</div></form>
的Tx
答案 0 :(得分:6)
我认为你可以这样做(纯JS,不使用外部框架):
//retrieve the <form>
var form = document.getElementsByTagName('form')[0];
//retrieve the <input> inside the form
var input = form.getElementsByTagName('input')[0];
//create a new <div> DOM element
var newElement = document.createElement('div');
//The containing div text is equal to the input value (your case)
newElement.innerHTML = input.value;
//simple empty the form by set innerHTML = ""
form.innerHTML = "";
//append the <div> inside the form
form.appendChild(newElement);
顺便说一句,我建议你,如果你想操作DOM并以更简单的方式做这些事情,学习如何使用jQuery或mootools等框架来做到这一点;)
答案 1 :(得分:4)
这是一般性描述:
创建:您可以使用document.createElement
创建元素,然后使用各种insertion methods来元素插入某个位置(例如{{3} }})。首先需要Node.appendChild
到相关节点
大多数浏览器还支持元素的innerHTML
属性。您可以将该属性设置为HTML(或文本)字符串,并相应地更新元素的内容。
正在更新:这取决于您要更新的数据。例如。 input
元素具有属性value
。要更改文本输入的值,您需要首先获得对该元素的引用,然后您可以执行element.value = 'new value'
。对于内容,您可以使用已经提到的innerHTML
属性
查看get references以查看他们拥有的属性。
正在删除:您需要HTML element reference。
我建议您查看Node.removeChild
并了解浏览器的差异。
答案 2 :(得分:1)
答案 3 :(得分:0)
这取决于您对最有效的定义。
如果你的意思是最简单的方法,那么你可以使用像jQuery这样的库,并按照这样的方式执行:
$('form').html('<dynamic markup>');
如果您的意思是最高效的方式,您可以执行以下操作:
document.getElementByTagName('form').innerHTML = '<dynamic markup>';