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 相关文章推荐
js中根据字数截取字符串,不能截断url
Jan 12 Javascript
javascript检测对象中是否存在某个属性判断方法小结
May 19 Javascript
JavaScript截取字符串的Slice、Substring、Substr函数详解和比较
Mar 20 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
Oct 20 Javascript
使用plupload自定义参数实现多文件上传
Jul 19 Javascript
微信小程序开发之实现选项卡(窗口顶部TabBar)页面切换
Nov 25 Javascript
用原生js做单页应用
Jan 17 Javascript
Swiper实现轮播图效果
Jul 03 Javascript
Node.js+Express+Mysql 实现增删改查
Apr 03 Javascript
微信小程序:数据存储、传值、取值详解
May 07 Javascript
webpack常用配置总览(小结)
Nov 18 Javascript
JS如何实现手机端输入验证码效果
May 13 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
3
2006/10/09 PHP
php 删除数组元素
2009/01/16 PHP
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
2016/10/13 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
使用firebug进行调试javascript的示例
2013/12/16 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
2015/01/01 NodeJs
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
JavaScript返回上一页的三种方法及区别介绍
2015/07/04 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
nodejs+mongodb aggregate级联查询操作示例
2018/03/17 NodeJs
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
2018/04/05 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
Vue使用mixin分发组件的可复用功能
2019/09/01 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
使用vue实现通过变量动态拼接url
2020/07/22 Javascript
Python中的自省(反射)详解
2015/06/02 Python
python处理二进制数据的方法
2015/06/03 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
毕业生自我鉴定范文
2013/11/08 职场文书
法学专业本科生自荐信范文
2013/12/17 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
财务内勤岗位职责
2014/04/17 职场文书
病媒生物防治方案
2014/05/13 职场文书
高中毕业典礼演讲稿
2014/09/09 职场文书
教师节简报
2015/07/20 职场文书
Pytest allure 命令行参数的使用
2021/04/18 Python
详解nodejs内置模块
2021/05/06 NodeJs
Python写情书? 10行代码展示如何把情书写在她的照片里
2022/04/21 Python