把innerHTML项赋值为什么不行?

把innerHTML项赋值为什么不行?

<script>

var ob=document.getElementsByTagName("li");

        for(var i=0;i<ob.length;i++){

            ob[i].innerHTML="第"+(i+1)+"名:"+ob[i].innerHTML;

            if(i%2==0) ob[i].className="red";

        }

    </script>

这样没问题,但是改成

<script>

        var ob=document.getElementsByTagName("li");

        for(var i=0;i<ob.length;i++){

            var obIn=ob[i].innerHTML;

            obIn="第"+(i+1)+"名:"+obIn;

            if(i%2==0) ob[i].className="red";

        }

    </script>

就出现问题,不会出现“第i名:”,请问是什么原因。

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

仔细看看是不是少了这个 ob[i].innerHTML=……

  • sherryliu 提问者 #1
    赋值给了obIn,obIn=ob[i].innerHTML;然后就出问题了,不赋值直接用没问题
    2017-11-06 22:40:08
  • 长相思兮 回复 提问者 sherryliu #2
    var obIn=ob[i].innerHTML;这一步你把HTML内容拿出来了 obIn="第"+(i+1)+"名:"+obIn;这一步你拼接了字符串,这里并没有修改HTML的内容。 在这添加ob[i]=obIn;就阔以了。
    2017-11-06 22:43:14
  • 是ob[i].innerHTML=obIn;
    2017-11-06 22:45:15
hunmix 2017-12-01 16:27:50
<script>
		//补充代码
        var ob=document.getElementsByTagName("li");
        for(var i=0;i<ob.length;i++){
            var obIn=ob[i].innerHTML;
            obIn="第"+(i+1)+"名:"+obIn;
            document.write(obIn+"<br>");
            if(i%2==0) ob[i].className="red";
        }
</script>

你加一句

document.write(obIn+"<br>");

就知道了,你的操作是对obIn这个变量做的,因为你只是把ob[i]的值赋给了obIn,并不会影响ob[i]这个变量的变化,而网页中显示的确实ob[i]的内容,所以没有变化

长相思兮 2017-11-06 22:27:52

你只拼接了字符串,并没有写入html。写进去就可以了。

  • 提问者 sherryliu #1
    怎么写?第一种也没用这种操作呀,第二种只是赋了一下值,操作跟第一种是一样的,但是就会出问题
    2017-11-06 22:36:34
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师