yil*_*yin 3 javascript dom innerhtml
我有以下代码:
tr = document.createElement("tr");
root.appendChild(tr);
td = document.createElement("td");
td.appendChild(document.createTextNode("some value"));
tr.appendChild(td);
Run Code Online (Sandbox Code Playgroud)
好吧,这段代码和
root.innerHTML = "<tr><td>some value</td></tr>";
Run Code Online (Sandbox Code Playgroud)
第一个版本可能是更好的方法,因为浏览器不必呈现字符串.但它太长了.特别是对于更大的结构,这种实现变得非常难以阅读.所以我觉得有更好的方法来编写它(没有任何JavaScript库).你将如何实现这一点,以便代码更具可读性?(现在我将代码与评论分开.)
您总是可以围绕笨重的DOM API编写包装函数,以使代码更具可读性.我经常使用类似的东西:
function newElement (type,attr,children) {
var el = document.createElement(type);
for (var n in attr) {
if (n == 'style') {
setStyle(el,attr[n]); /* implementation of this function
* left as exercise for the reader
*/
}
else {
el[n] = attr[n];
}
}
if (children) {
for (var i=0; i<children.length; i++) {
el.appendChild(children[i]);
}
}
}
function newText (text) {
document.createTextNode(text);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以编写更多的声明性代码:
var tr = newElement('tr',{},[
newElement('td',{},[
newText('some value')
])
]);
Run Code Online (Sandbox Code Playgroud)
记住css和javascript之间的区别:
var div = newElement('div',{
className:'foo',
style:{
marginLeft:'10px'
}
},[
newText('notice we use "className" instead of class" '+
'and "marginLeft" instead of "margin-left"')
]);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4720 次 |
最近记录: |