用过jquery的都知道下面这种用法:
make: function(tagName, attributes, content) {
var el = document.createElement(tagName);
if (attributes) $(el).attr(attributes);
if (content) $(el).html(content);
return el;
},
这段代码是backbones.js View对象的方法,就是为了方便创建一个document element,以对象实行返回。
我在编程实践中弄了一个自己觉得蛮好用的一个类,对于创建dom对象很方便,尤其是有属性继承情况的。
先贴代码:
/**
* Begin class defination XHtml : Html Dom生成辅助类
*/
var XHtml = Base.extend({
constructor : null,
dump : '' // 避免,结尾,在IE浏览器中语义错误
},{
createFn : function(tag, attr){
return (function(tagIn, attrIn){
return function(text, attr){
attr = attr || {};
if(attrIn)
$.extend(attr, attrIn);
var attrStr = '';
for(key in attr)
attrStr += key + '="' + attr[key] + '" ';
return '<{0} {1}>{2}</{0}>'.format(tagIn, attrStr, text || '');
}
})(tag, attr);
},
input : function(val, attr){
val = val || '';
var attrStr = '';
if(attr){
for(key in attr)
attrStr += key + '="' + attr[key] + '" ';
}
return '<input value="{0}" {1} />'.format(val, attrStr);
},
sel : function(ll, val, attr, canBlank){
var attrStr = '';
if(attr){
for(key in attr)
attrStr += key + '="' + attr[key] + '" ';
}
var rr = '<select {0}>'.format(attrStr);
var tpl = '<option value="{0}" {2} title="{1}">{1}</option>';
var defaultLabel = '-请选择-';
if(canBlank){
rr += tpl.format('', defaultLabel, '');
}
val = val || '';
var optionStr = $(ll).map(function(){
return tpl.format(this['code'], this['name'], val == this['code'] ? 'selected' : '');
}).get().join('');
return (rr + '{0}</select>').format(optionStr);
},
dump : '' // 避免,结尾,在IE浏览器中语义错误
});
$.extend(XHtml, {
createInput : function(attr){
return function(val, attrIn){
attrIn = attrIn || {};
if(attr)
$.extend(attrIn, attr);
return XHtml.input(val, attrIn);
};
},
td : XHtml.createFn('td'),
tr : XHtml.createFn('tr'),
alink : function(txt, url, attr){
var alinkIn = XHtml.createFn('a');
attr = attr || {};
attr.href = url;
return alinkIn(txt, attr);
},
trJoin : function(attr){
var arg = [];
for (var i = 0; i < arguments.length; i++){
if(typeof arguments[i] == 'string')
arg.push(arguments[i]);
}
return XHtml.tr(arg.join(''), typeof attr == 'string' ? null : attr);
}
});
$.extend(XHtml, {
radio: function(name, ll, pender, keyName, keyVal, isFirstChecked, multiple){
pender = pender || ' ';
keyName = keyName || 'name';
keyVal = keyVal || 'val';
var fnRadio = XHtml.createInput({type: multiple ? 'checkbox' : 'radio', name: name});
return _.map(ll, function(item, i){
if(isFirstChecked && i == 0)
return fnRadio(item[keyVal], {checked: 'true'}) + pender + item[keyName];
else
return fnRadio(item[keyVal]) + pender + item[keyName];
}).join(pender);
}
});
思路只是简单的拼接字符串,并不是dom对象的创建和操作。
根据具体需求,可以在此基础上再封装一层,业务相关的所为所为控件的视图部分。
还比较好用。
比如创建一个table就可以以下面方式:
with(XHtml){
var fnTable = createFn('table', {class: 'table1'});
var tpl = fnTable(
trJoin(
td(input('A')),
td(radio('testRadio', [{name: '男', val: 'M'}])),
td(sel([{name: '男', val: 'M'}], null, {name: 'testSelect'})),
td(''))
);
$('#wrap').html(tpl);
}
很有Groovy HtmlBuilder的feel啊,有些模板引擎(ruby)之类的就是这样风格,其实javascript一样可以做到的
分享到:
相关推荐
DOM XML教程对于理解XML文档的结构和动态操作XML数据至关重要,不论你是前端开发者还是后端程序员,都能从中受益。通过学习DOM,你可以更好地实现XML数据的读取、处理和展示,提高应用程序的灵活性和功能。
网页设计是创建交互式、动态和视觉吸引人的在线内容的过程,涵盖了多个技术领域。这份"网页设计工具手册"集合了JavaScript、ASP、CSS、HTML以及DOM等关键元素的手册,为网页设计师和开发者提供了全面的参考资料。...
DHTML(动态HTML)是HTML、CSS、JavaScript和DOM的组合,使得网页能够实现动态效果,如鼠标悬停时改变样式、动画等。DHTML_参考手册.chm可能包含了关于如何利用这些技术实现动态交互的指南。 这些手册提供了丰富的...
- HTML解析:虽然DOMParser主要用于XML,但它也可以用来解析HTML字符串,这对于动态生成或修改网页内容非常有用。 7. **其他工具和库**: 在实际开发中,除了DOMParser,还有许多库和框架提供更高级的XML处理功能...
HTML5 DOM(Document Object Model)是一种编程接口,允许程序和脚本动态更新、添加、删除以及改变HTML和XML文档的结构。在Delphi中,通过TWebBrowser控件,开发者可以与HTML5 DOM进行交互,实现诸如加载HTML文档、...
在JavaScript编程中,DOM(Document Object Model)是HTML和XML文档的一种结构化表示,它将网页内容抽象成一系列节点,允许我们通过JavaScript来操作这些节点,实现动态网页的效果。本篇我们将深入探讨如何将手工...
文件“HtmlDom.chm”很可能是一个帮助文件,提供了关于PHP HTML DOM操作的详细指南。 PHP HTML DOM的核心是`DOMDocument`类,它是整个文档的根节点,可以用来加载HTML或XML文档。通过`loadHTML()`或`loadHTMLFile()...
动态创建iframe意味着在网页加载后,通过JavaScript代码创建并插入到DOM(文档对象模型)中,而不是在HTML源代码中静态定义。 以下是一个简单的动态创建iframe的例子: ```javascript // 创建iframe元素 var ...
在这个过程中,DOM操作是关键,因为它用来定位和更新需要更新的HTML部分。 NetBeans是一个跨平台的集成开发环境(IDE),支持多种编程语言,包括JavaScript。在学习这个课程时,你可能需要了解如何在NetBeans中编写...
DOM(文档对象模型)是XML和HTML文档的一种标准表示方式,它提供了一种结构化的接口,允许程序和脚本动态地访问、修改以及更新XML文档。在JavaScript中,DOM是通过内置的DOM API来实现的,使得开发者能够用...
在JavaScript编程中,DOM(Document Object Model)是用于表示HTML或XML文档的一种树形结构,它允许程序和脚本动态更新、添加、删除和改变元素和属性。在本主题"js表格操作,DOM实现数据动态增删查改"中,我们将深入...
9. **DOM与JavaScript的结合**:DOM是JavaScript与HTML交互的核心,书中会介绍如何使用JavaScript操作DOM,实现动态网页效果,如动画、表单验证、AJAX请求等。 10. **性能优化**:处理大型DOM树时,性能是一个重要...
在JavaScript和jQuery的世界里,动态创建DOM元素是常见的需求,特别是在构建交互丰富的Web应用时。然而,不恰当的实现方式可能会导致性能问题和兼容性挑战。让我们深入探讨基于jQuery的动态创建DOM元素的最佳实践。 ...
总的来说,Laravel4结合"htmldom"库,为开发者提供了便利的工具来解析和操作HTML文档,这在处理动态生成的内容、网页抓取或者数据提取等场景中非常有用。熟练掌握这一技能,能帮助你更好地应对复杂的Web开发任务。
- **教程**:`HTML DOM 教程.CHM`是一个关于HTML DOM的教程,可以帮助开发者理解如何使用DOM来操作HTML页面。 - **应用**:在Web开发中,HTML DOM广泛用于实现动态效果,如添加、删除或修改页面元素,以及响应用户...
这个“HTML DOM 参考手册”中的汉化版确保了国内开发者可以更方便地理解和应用DOM技术,无论是在创建动态网页、实现交互效果,还是在进行自动化测试和网页爬虫等方面,DOM都是不可或缺的知识基础。通过深入学习DOM,...
### HTML DOM 底层 JavaScript 知识点解析 ...总之,HTML DOM底层JavaScript的深入理解,不仅需要掌握DOM的基本概念和接口,还需要熟悉如何使用JavaScript与DOM进行交互,从而实现网页的动态功能和响应性设计。
1. **DOM(Document Object Model)**:DOM是HTML和XML文档的编程接口,它将文档表示为树形结构,允许程序和脚本动态更新、添加、删除和改变元素和属性。 2. **HTML5 Canvas**:HTML5中的Canvas元素是一个可绘制...