javascript - JS for...in循环的问题。for (var p in oSkin) oSkin[p].className = "";

查看:312
本文介绍了javascript - JS for...in循环的问题。for (var p in oSkin) oSkin[p].className = "";的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="Content-Type" content="text/html">
  <title>网页换肤</title>
  <style>
    ...
  </style>
<link href="green.css" rel="stylesheet" type="text/css">
<script>
    window.onload = function () {
      var oLink = document.getElementsByTagName("link")[0];
      var oSkin = document.getElementById("skin").getElementsByTagName("li");

      for (var i = 0; i < oSkin.length; i++) {
        oSkin[i].onclick = function () {
          for (var p in oSkin) oSkin[p].className = "";
          this.className = "current";
          oLink['href'] = this.id + ".css";
        }
      }
    }
</script>
</head>

<body>
  <div id="outer">
    <ul id="skin">
      <li id="red" title="红色">红</li>
      <li id="green" class="current" title="绿色">绿</li>
      <li id="black" title="黑色">黑</li>
    </ul>
    <ul id="nav">
      <li><a href="#">新闻</a></li>
      <li><a href="#">娱乐</a></li>
      <li><a href="#">体育</a></li>
      <li><a href="#">电影</a></li>
      <li><a href="#">音乐</a></li>
      <li class="last"><a href="#">旅游</a></li>
    </ul>
  </div>
</body>

</html>

JS代码里的这一个for (var p in oSkin) oSkin[p].className = "";
不是很明白,为什么声明了一个p变量,可以直接用oSkin[p]来设置classname的属性?
望解答,万分感谢。

解决方案

下次写for循环记得用大括号包裹起来
for(p in obj)如果obj是数组,p就是下标,如果obj是对象,p就是属性名称

这篇关于javascript - JS for...in循环的问题。for (var p in oSkin) oSkin[p].className = &quot;&quot;;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆