基于jquery的关于动态创建DOM元素的问题


Posted in Javascript onDecember 24, 2010
<script type="text/javascript"> 
document.getElementById("testDiv").innerHTML ="动态创建的div"; 
</script>

而且用的应该是还是乐此不疲,但是有多少人知道这是错误的做法!错误的原因:
(1) 在页面加载时改变了页面的结构. 在IE6中如果网络变慢或者页面内容太大就会出现"终止操作"的错误. 也就是说"永远不要在页面加载时改变页面的Dom模型".
(2) 使用修改HTML内容添加元素, 不符合Dom标准. 在实际工作中也碰到过使用这种方法修改内容后, 某些浏览器中并不能立刻显示添加的元素, 因为不同浏览器的显示引擎是不同的. 但是如果我们使用Dom的CreateElement创建对象, 在所有的浏览器中几乎都可以. 但是在jQuery中如果传入的而是一个完整的HTML字符串, 内部也是使用innerHTML. 所以也不是完全否定innerHTML函数的使用.所以从现在开始请摒弃这种旧知识, 使用下面介绍的正确方法编程.
关于使用HTML DOM创建元素本文不做详细介绍, 下面举一个简单的例子:第一种正确方式:
//使用Dom标准创建元素 
var select = document.createElement("select"); 
select.options[0] = new Option("加载项1", "value1"); 
select.options[1] = new Option("加载项2", "value2"); 
select.size = "2"; 
var object = testDiv.appendChild(select);

通过使用 document.createElement 方法我们可以创建Dom元素, 然后通过appendChild方法为添加到指定对象上.
第二种方式: 使用Jquery
当HTML字符串是没有属性的元素是, 内部使用document.createElement创建元素, 比如:

//jQuery内部使用document.createElement创建元素:

$("").css("border","solid 1px #FF0000").html("动态创建的div").appendTo(testDiv);
否则使用innerHTML方法创建元素:

//jQuery内部使用innerHTML创建元素:

$("动态创建的div").appendTo(testDiv)

Javascript 相关文章推荐
Gird事件机制初级读本
Mar 10 Javascript
js中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
jQuery滚动条插件nanoscroller使用指南
Apr 21 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
Dec 14 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
基于JavaScript实现淘宝商品广告效果
Aug 10 Javascript
Vue实现导出excel表格功能
Mar 30 Javascript
通过javascript实现段落的收缩与展开
Jun 26 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
javascript读取本地文件和目录方法详解
Aug 06 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
Nov 03 Javascript
jQuery实现简单轮播图效果
Dec 27 jQuery
在JavaScript中获取请求的URL参数
Dec 22 #Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
Dec 22 #Javascript
jQuery Clone Bug解决代码
Dec 22 #Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 #Javascript
jquery插件 autoComboBox 下拉框
Dec 22 #Javascript
Jquery截取中文字符串的实现代码
Dec 22 #Javascript
jquery里的each使用方法详解
Dec 22 #Javascript
You might like
模仿OSO的论坛(二)
2006/10/09 PHP
PHP HTML代码串截取代码
2008/12/29 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
Json_encode防止汉字转义成unicode的方法
2016/02/25 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
js给网页加上背景音乐及选择音效的方法
2015/03/03 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
vue.js如何将echarts封装为组件一键使用详解
2017/10/10 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
js实现同一个页面,多个enter事件绑定的示例
2018/10/10 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
2019/11/08 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
JavaScript实现拖拽功能
2020/02/11 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
django自带的server 让外网主机访问方法
2018/05/14 Python
python生成requirements.txt的两种方法
2019/09/18 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
Python 串口通信的实现
2020/09/29 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
Linux常见面试题
2016/10/04 面试题
综合测评自我鉴定
2013/10/08 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
我的求职择业计划书
2014/04/04 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
追讨欠款律师函
2015/05/27 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
MySQL中int (10) 和 int (11) 的区别
2022/01/22 MySQL