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 相关文章推荐
实现复选框全选/全不选切换
Dec 23 Javascript
用js实现输入提示(自动完成)的实例代码
Jun 14 Javascript
JS(JQuery)操作Array的相关方法介绍
Feb 11 Javascript
多个checkbox被选中时如何判断是否有自己想要的
Sep 22 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
Oct 10 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
js 两个日期比较相差多少天的实例
Oct 19 Javascript
Vue中v-for的数据分组实例
Mar 07 Javascript
Vue中使用create-keyframe-animation与动画钩子完成复杂动画
Apr 09 Javascript
基于js判断浏览器是否支持webGL
Apr 18 Javascript
js实现html滑动图片拼图验证
Jun 24 Javascript
vue实现在data里引入相对路径
Jun 05 Vue.js
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实现mysql封装类示例
2014/05/07 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
PHP微信PC二维码登陆的实现思路
2017/07/13 PHP
javascript 写类方式之三
2009/07/05 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
十个迅速提升JQuery性能让你的JQuery跑得更快
2012/12/10 Javascript
微信小程序实现类似微信点击语音播放效果
2020/03/30 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
python 域名分析工具实现代码
2009/07/15 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
详解python对象之间的交互
2020/09/29 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
尤妮佳moony海外旗舰店:日本殿堂级纸尿裤品牌
2018/02/23 全球购物
专注澳大利亚特产和新西兰特产的澳洲中文网:0061澳洲制造
2019/03/24 全球购物
英格兰足协官方商店:England Store
2019/07/12 全球购物
新年晚会主持词
2014/03/24 职场文书
校庆活动策划方案
2014/06/05 职场文书
排查整治工作方案
2014/06/09 职场文书
物业消防安全责任书
2014/07/23 职场文书
2015年母亲节活动总结
2015/02/10 职场文书
就业导师推荐信范文
2015/03/27 职场文书
地球上的星星观后感
2015/06/02 职场文书
学习心理学心得体会
2016/01/22 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
HTML+CSS 实现顶部导航栏菜单制作
2021/06/03 HTML / CSS