zCool工具箱新增工具——createElement方法。
用法:根据(HTML)字符串参数创建一个元素。
示例:
createElement('div');//这个当然是调用内置方法了
createElement('<tbody><tr><td></td></tr><tr></tbody>');
createElement('<img src="***" name="***" />');
createElement('<br>');
你可以回想一下,特别是用insertRow/insertCell这些传统方法为表格创建添加元素有多痛苦
源码实现:
/**
* @author zbm2001 宝儿
*/
createElement = function(sHtml){
// 创建一个可复用的包装元素
var recycled = document.createElement('div'),
// 创建标签简易匹配
reg = /^<([a-zA-Z]+)(?=\s|\/>|>)[\s\S]*>$/,
// 某些元素HTML标签必须插入特定的父标签内,才能产生合法元素
// 另规避:ie7-某些元素innerHTML只读
// 创建这些需要包装的父标签hash
hash = {
'colgroup': 'table',
'col': 'colgroup',
'thead': 'table',
'tfoot': 'table',
'tbody': 'table',
'tr': 'tbody',
'th': 'tr',
'td': 'tr',
'optgroup': 'select',
'option': 'optgroup',
'legend': 'fieldset'
};
// 闭包重载方法(预定义变量避免重复创建,调用执行更快,成员私有化)
createElement = function(sHtml){
// 若不包含标签,调用内置方法创建并返回元素
if (!reg.test(sHtml)) {
return document.createElement(sHtml);
}
// hash中是否包含匹配的标签名
var tagName = hash[RegExp.$1.toLowerCase()];
// 若无,向包装元素innerHTML,创建/截取并返回元素
if (!tagName) {
recycled.innerHTML = sHtml;
return recycled.removeChild(recycled.firstChild);
}
// 若匹配hash标签,迭代包装父标签,并保存迭代层次
var deep = 0, element = recycled;
do {
sHtml = '<' + tagName + '>' + sHtml + '</' + tagName + '>';
deep++;
}
while (tagName = hash[tagName]);
element.innerHTML = sHtml;
// 根据迭代层次截取被包装的子元素
do {
element = element.removeChild(element.firstChild);
}
while (--deep > -1);
// 最终返回需要创建的元素
return element;
}
// 执行方法并返回结果
return createElement(sHtml);
}
分享到:
相关推荐
这通常涉及字符串的模糊匹配算法,如Levenshtein距离、部分匹配或简单的包含检查。对于简单实现,可以使用JavaScript的`Array.filter`方法: ```javascript function filterData(inputValue, data) { return data....
另外,XmlSerializer类可以自动将类实例转换为XML字符串,反之亦然,这对于数据持久化非常有用。 ```csharp public class Book { public string Title { get; set; } } [XmlRoot("Book")] public class BookXml {...
当购物车页面加载时,我们需要遍历所有已存储的商品ID,并根据这些ID从数据源(例如数组或API)获取商品信息,然后动态创建HTML元素展示在页面上。以下代码演示了如何使用循环检查Cookie并生成购物车表格: ```...
如果需要更复杂的提示框效果,我们可以创建自定义的HTML元素来模拟这个功能。在给出的部分代码中,可以看到一个名为`tooltips.js`的脚本,它创建了一个动态定位的提示框。 1. **创建新元素**:在`newelement`函数中...
3. **日期和时间处理**:`datatime.js` 可能包含了对日期和时间的处理函数,如计算月份天数、判断是否闰年、格式化日期字符串等。这些功能可能基于JavaScript内置的`Date`对象进行扩展。 4. **用户交互**:控件支持...
这个方法用于将HTML字符串转换为文档片段,这对于动态创建DOM元素非常有用。 ```javascript if((typeof Range !== "undefined") && !Range.prototype.createContextualFragment) { Range.prototype....
此外,由于它依赖于特性检测而非用户代理(UA)字符串,其结果更为可靠。 然而,使用UA字符串进行检测也是一种常见的做法。通过分析浏览器发送的UA信息,可以推断出浏览器的类型和版本,进而判断是否支持特定的CSS3...
代码定义了一个自定义函数$c(),它利用document的createElement方法创建一个新的HTML元素。 ```javascript function $c(tagname) { return document.createElement(tagname); } ``` ### 知识点三:使用jQuery绑定...
在读取本地存储的城市数据时,我们需要确保从JSON格式中解析出的时间字符串能够转换为Date对象,然后可以使用`toLocaleString()`方法或自定义格式化函数来展示用户友好的时间。此外,确保在保存数据时,时间信息是以...