宝哥软件园

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

编辑:宝哥软件园 来源:互联网 时间:2021-11-11

复制代码如下:doctype htmlhtmlheadtitleff和ie动态加载元素/title script type=' text/JavaScript ' src=' http : jquery-1 . 4 . 4 . min . js '/script style type=' text/CSS ' Li { margin 33600;划水:0;list-style : none }/style script type=' text/JavaScript ' function add(){ var LiTemplate=$(' # template ');lite mplate . find(' input[name=' awb pre ']')。val(' 999 ');lite mplate . find(' input[name=' awb no ']')。val(' 12312311 ');$('#box ')。追加(' Li ' LiTemplate . html()'/Li ');}/script/head dyul id=' box ' Li id=' template ' style=' display : none ' awb pre : input type=' text ' value=' # awb no # ' name=' awb pre '/Awbno : input type=' text ' value=' # awb no # ' name=' awb no '/Li/ul input type=' button ' value=' Add ' onclick=' return Add()'//body/html代码原本打算动态添加它在IE 6、7、8、9(兼容模式)下运行正常,见下面截图:

但是在FF、Chrome、IE9(不兼容模式)中,对于: 就不合适了。

更改add()方法复制代码如下: script type=' text/JavaScript '函数add(){ var lite plate=$(' # template ');$('#box ')。追加(' Li ' LiTemplate . html()'/Li ')var new _ Li=$(' # box Li : last ');new _ Li . find(' input[name=' awb pre ']')。val(' 999 ');new _ Li . find(' input[name=' awb no ']')。val(' 12312311 ');}/script是对的,两者的区别在于:第一个是先做赋值,然后添加到dom树;第二种方法是先将其添加到dom树中,然后找出相应的处理分配。我是一个前端技术新手,个人理解第一次写作类似于‘通过值传递’,var liTemplate=$(' # template ');后来不管怎么处理lite plate中的元素,因为lite plate还没有添加到dom树中,最后调用liTemplate.html()时,返回的html代码仍然是初始处理前的html代码(它是按值传递的,用的是副本,不管怎么处理,都不会影响原来的值);而第二种编写方式,当元素首先被添加到dom树中,然后从dom中找到时,它就相当于获得的对象的指针引用。对“指针”所指向的对象的任何修改都将直接影响对象本身(在某种意义上是“通过引用传递”)。

更多资讯
游戏推荐
更多+