为了账号安全,请及时绑定邮箱和手机立即绑定

前端大神,我不懂这两个js有什么不同?

前端大神,我不懂这两个js有什么不同?

这是第一个window.onload=function(){(function createTag(){//动态创建b标签 var label; var li=document.getElementById("checkList").getElementsByTagName("li"); for(var i=0;i<li.length;i++){ label=li[i].getElementsByTagName("label"); var bTag=document.createElement("b"); li[i].insertBefore(bTag,label[0]); } })()}</script>----------------------------------------------------这是第二个window.onload=function(){var li=document.getElementById("checkList").getElementsByTagName("li");(function createTag(){//动态创建b标签 var label; for(var i=0;i<li.length;i++){ label=li[i].getElementsByTagName("label"); var bTag=document.createElement("b"); li[i].insertBefore(bTag,label[0]); } })()}</script>--------------------------------第一个可以创建b标签,第二个不行,为什么呢?第二个拿出来定义是因为我后面函数还得用。。。
查看完整描述

1 回答

?
stone310

TA贡献361条经验 获得超191个赞

这里看这个li变量放哪里都没有问题的,自己测试了一遍可以添加啊,你的JS还有没有其他内容

<!doctype>
<html>
<head>
</head>
<body>
<div id='checkList'>
    <li>
        <label>111111</label>
    </li>
    <li>
        <label>222222</label>
    </li>
    <li>
        <label>333333</label>
    </li>
</div>
</body>
<script type='text/javascript'>
    window.onload = function () {
        var li = document.getElementById("checkList").getElementsByTagName("li");
        (function createTag() {//动态创建b标签
            var label;
            for (var i = 0; i < li.length; i++) {
                label = li[i].getElementsByTagName("label");
                var bTag = document.createElement("b");
                li[i].insertBefore(bTag, label[0]);
            }
        })()
    }
</script>
</html>


查看完整回答
反对 回复 2016-10-03
  • 舞动的指尖
    舞动的指尖
    <script> window.onload=function(){ (function createTag(){//动态创建b标签 var label; var li=document.getElementById("checkList").getElementsByTagName("li"); for(var i=0;i<li.length;i++){ label=li[i].getElementsByTagName("label"); var bTag=document.createElement("b"); li[i].insertBefore(bTag,label[0]); } })() (function checklist(){ var li=document.getElementById("checkList").getElementsByTagName("li"); for(var i=0;i<li.length;i++){ li[i].onclick=function(){ if(this.className=="selected"){ this.className=null; }else{ this.className="selected" } } } })() } </script>
  • 舞动的指尖
    舞动的指尖
    <div class="typeList"> <form action="#" method="post" name="typeList" > <ul id="checkList"> <li class="selected"><input type="checkbox" name="typeList" id="aaa" /><label for="aaa"></label>aaa</li> <li><input type="checkbox" name="typeList" id="bbb" /><label for="bbb"></label>bbb</li> <li><input type="checkbox" name="typeList" id="ccc" /><label for="ccc"></label>ccc</li> <li><input type="checkbox" name="typeList" id="ddd" /><label for="ddd"></label>ddd</li> <li><input type="checkbox" name="typeList" id="eee" /><label for="eee"></label>eee</li> <li><input type="checkbox" name="typeList" id="fff" /><label for="fff"></label>fff</li> <li><input type="checkbox" name="typeList" id="ggg" /><label for="ggg"></label>ggg</li> <li><input type="checkbox" name="typeList" id="hhh" /><label for="hhh"></label>hhh</li> <li><input type="checkbox" name="typeList" id="iii" /><label for="iii"></label>iii</li> </ul> </form> </div>
  • stone310
    stone310
    用了你发的代码,<b>都能创建,跟变量放在内部很放在外部没有关系; 有个小问题,你这里点击<li>,class并不会改变,当你写多个(function(){})();​自执行函数时,一定记得在每一个的最后结尾处加上“;”,否则系统会识别不了,然后报错,后续的就无法执行了;
  • 1 回答
  • 0 关注
  • 1315 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信