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 相关文章推荐
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
Dec 01 Javascript
jQuery简单实现提交数据出现loading进度条的方法
Mar 29 Javascript
Vue.js动态组件解析
Sep 09 Javascript
Vue.JS入门教程之事件监听
Dec 01 Javascript
AngularJS中的Promise详细介绍及实例代码
Dec 13 Javascript
vue中mint-ui环境搭建详细介绍
Apr 06 Javascript
详解angularjs的数组传参方式的简单实现
Jul 28 Javascript
AngularJS中的作用域实例分析
May 16 Javascript
vue项目出现页面空白的解决方案
Oct 31 Javascript
解决vue-router 二级导航默认选中某一选项的问题
Nov 01 Javascript
React Ant Design树形表格的复杂增删改操作
Nov 02 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 命名空间实例说明
2011/01/27 PHP
PHP实现懒加载的方法
2015/03/07 PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
2016/06/05 PHP
让div层随鼠标移动的实现代码 ie ff
2009/12/18 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
js判断文本框剩余可输入字数的方法
2015/02/04 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
vue-router懒加载的3种方式汇总
2021/02/28 Vue.js
用Python编写一个简单的俄罗斯方块游戏的教程
2015/04/03 Python
python冒泡排序简单实现方法
2015/07/09 Python
Python中字符串的常见操作技巧总结
2016/07/28 Python
Python调用ctypes使用C函数printf的方法
2017/08/23 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python3 pygame实现接小球游戏
2019/05/14 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
新西兰最大的在线设计师眼镜店:SmartBuyGlasses新西兰
2017/10/20 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
法国女性内衣购物网站:Glamuse
2019/05/13 全球购物
你常见到的runtime exception
2016/09/05 面试题
大气污染防治方案
2014/05/19 职场文书
本科毕业生自荐信
2014/06/02 职场文书
工作求职自荐信
2014/06/13 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
研究生学习计划书应该怎么写?
2019/09/10 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
react 路由Link配置详解
2021/11/11 Javascript
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python