javascript - 关于JS插入元素节点并给class赋值问题,请大神帮助。
PHP中文网
PHP中文网 2017-04-10 17:33:54
[JavaScript讨论组]

我想要的效果是,点击添加按钮给指定的UL里添加LI。并按条件给其赋值;
现在遇到的问题是:点击插入按钮时,插入的第一个LI没有按条件给class赋值;求大神帮助;谢谢哈。
以下是我的代码



    
        
        
        
        
    
    
        
        
        
        

PHP中文网
PHP中文网

认证0级讲师

全部回复(3)
迷茫

第一次单击时oli_2.length为0,不走if(oli_2.length>0)里面,因此li附class的代码没有执行到,所以第一个li没有样式,而后面加进来的li可以执行到,所以后来的li样式应用上了。
你的代码除了命名不规范外,还有一个问题:就是你在每次单击时都去遍历已经添加进来的所有li(oli_2),然后根据奇偶去附Class,这样在数量多的时候势必造成性能问题。我的解决办法每次给新加进来的有且只有一个li附class。
只需把你的这段代码改成下面的即可:


                    if(oli_2.length>0){
                         oul_1.insertBefore(oli_1, oli_2[0]);
                         //判断li%2的值是否为0,然后插入相应的className
                         for(var i=0;i<oli_2.length;i++){
                             if(i%2 === 0){
                                 oli_1.className = 'va12';
                             }
                             else{
                                 oli_1.className = 'va11';
                             }
                         };    
                     }
                     else{
                         oul_1.appendChild(oli_1);
                     }
                 oul_1.appendChild(oli_1);
                 var len = oli_2.length - 1;
                 oli_1.className = len % 2 === 0 ? 'va12' : 'va11';
ringa_lee

第一次点击时,oli_2先查找li,oli_2.length===0,后面oli_1被append,这时才oli_2.length>0。

代码可读性有点差,建议变量命名更语义化一点。

高洛峰
else{
                     oul_1.appendChild(oli_1);
                      oli_1.className = 'va12';  //少了这一句
                 }
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号