javascript:FF/Chrome与IE动态加载元素的区别说明


Posted in Javascript onJanuary 26, 2014
<!doctype html>
<html>
<head>
 <title>ff 与 ie 动态加载元素的区别</title>
 <script type="text/javascript" src="jquery-1.4.4.min.js"></script>
 <style type="text/css">
  li{margin:0;padding:0;list-style:none}
 </style>
 <script type="text/javascript">
  function add(){
   var liTemplate = $("#template");
   liTemplate.find("input[name='awbpre']").val("999");
   liTemplate.find("input[name='awbno']").val("12312311");   
   $("#box").append("<li>" + liTemplate.html() + "</li>");  
  }
 </script>
</head>
<body>
 <ul id="box">
  <li id="template" style="display:none">
   awbpre:
   <input type="text" value="#awbno#" name="awbpre"/>
   awbno:
   <input type="text" value="#awbno#" name="awbno"/>
  </li>
 </ul> 
 <input type="button" value="add" onclick="return add()"/>
</body>
</html>

代码本意为:点击Add按钮时,动态向页面添加二个输入框,同时给二个新加的输入框赋值。IE 6,7,8,9(兼容模式)下运行正常,见下面的截图:
javascript:FF/Chrome与IE动态加载元素的区别说明

但是在FF,Chrome,IE9(非兼容模式)下,就不对了:
javascript:FF/Chrome与IE动态加载元素的区别说明

把add()方法改成

 <script type="text/javascript">
  function add(){
   var liTemplate = $("#template");    
   $("#box").append("<li>" + liTemplate.html() + "</li>")
   var new_li = $("#box li:last");
   new_li.find("input[name='awbpre']").val("999");
   new_li.find("input[name='awbno']").val("12312311");  
  }
 </script>

就对了,二者的区别在于:第一种是先做赋值处理,再添加到dom树中;第二种写法是先加到dom树中,再找出对应的处理赋值。我对于前端技术实属菜鸟,个人理解:第一种写法类似"按值传递",var liTemplate = $("#template");后,不管再对liTemplate里的元素做何处理,因为liTemplate尚未加入到dom树中,最终调用liTemplate.html()时,返回的html代码,还是最初处理前的html代码(有点按值传递,使用的是一个副本,不管怎么处理,不影响原值的意味);而第二种写法,先加入到dom树后,再从dom中查找到该元素时,这时相当于得到的对象的指针引用,对“指针”指向的对象做任何修改,都会直接影响对象本身(有点按"引用传递"的意味)
Javascript 相关文章推荐
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
Nov 25 Javascript
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
Nov 15 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
Jul 14 Javascript
三种Node.js写文件的方式
Mar 08 Javascript
[原创]Bootstrap 中下拉菜单修改成鼠标悬停直接显示
Apr 14 Javascript
js实现瀑布流效果(自动生成新的内容)
Mar 16 Javascript
vue2 自定义动态组件所遇到的问题
Jun 08 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 Javascript
node爬取新型冠状病毒的疫情实时动态
Feb 06 Javascript
Vue+Spring Boot简单用户登录(附Demo)
Nov 12 Javascript
JavaScript构造函数原理及实现流程解析
Nov 19 Javascript
js中的时间转换—毫秒转换成日期时间的示例代码
Jan 26 #Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
Jan 25 #Javascript
手机平板等移动端适配跳转URL的js代码
Jan 25 #Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
Jan 24 #Javascript
jquery批量设置属性readonly和disabled的方法
Jan 24 #Javascript
jquery 通过name快速取值示例
Jan 24 #Javascript
jquery 鼠标滑动显示详情应用示例
Jan 24 #Javascript
You might like
php根据分类合并数组的方法实例详解
2013/11/06 PHP
PHP+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
JavaScript实现的encode64加密算法实例分析
2015/04/15 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
2017/05/14 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
详解在Javascript中进行面向切面编程
2019/04/28 Javascript
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
uni-app 组件里面获取元素宽高的实现
2019/12/27 Javascript
Python进程间通信用法实例
2015/06/04 Python
Python实现简单字典树的方法
2016/04/29 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
使用python实现个性化词云的方法
2017/06/16 Python
python 删除非空文件夹的实例
2018/04/26 Python
cmd运行python文件时对结果进行保存的方法
2018/05/16 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
Python: glob匹配文件的操作
2020/12/11 Python
CSS3的column-fill属性对齐列内容高度的用法详解
2016/07/01 HTML / CSS
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
生物工程专业求职信
2014/09/03 职场文书
教师个人发展总结
2015/02/11 职场文书
数学教师求职信范文
2015/03/20 职场文书
党员进社区活动总结
2015/05/07 职场文书
红与黑读书笔记
2015/06/29 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python
Javascript之datagrid查询详解
2021/09/15 Javascript
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL