chaliboy 发表于 2015-12-5 11:01:31

求高手解答

本帖最后由 chaliboy 于 2015-12-5 16:26 编辑


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript课后练习</title>
<style>
body,div,h2,ul,li,p{margin:0;padding:0;}
a:link,a:visited{color:#fff;text-decoration:none;}
a:hover{text-decoration:underline;}
body{font:12px/1.5 Tahoma;}
#lesson{width:300px;background:#fff;border:12px solid #eee;margin:10px auto 0;padding:5px;border-radius:10px;}
#lesson2{width:300px;margin:0px auto;}
#lesson h2{color:#fff;font-size:14px;line-height:30px;cursor:pointer;background:#9c0;padding:0 1em;margin-bottom:1px;border-radius:15px 5px;}
#lesson h2.current{background:#09f;}
#lesson ul{list-style-type:none;margin-bottom:1px;}
#lesson li{color:#fff;margin-top:1px;background:#7CF;line-height:25px;padding:0 1.5em;border-radius:10px 5px 5px 10px;}
#copyright{color:#999;width:324px;margin:5px auto 0;text-align:right;}
</style>
<script type="text/javascript">
var get = {
      byId: function(id) {
                return document.getElementById(id)
      },
      byClass: function(sClass, oParent) {
                var aClass = [];
                var aElem = this.byTagName("*", oParent);
                for (var i = 0; i < aElem.length; i++) aElem.className == sClass && aClass.push(aElem);
                return aClass
      },
      byTagName: function(elem, obj) {
                return (obj || document).getElementsByTagName(elem)
      }
};
window.onload = function ()
{
      var i,
      n,
      aLi,
      elem = {
                oParent: get.byId("lesson2"),
                ul: get.byTagName("ul", this.oParent),
                h2: get.byTagName("h2", this.oParent),
                li: get.byTagName("li", this.oParent)
      };
      
      alert(elem.oParent.innerHTML);//=>这行输出的是lesson2的,没有错误。
      alert(elem.ul.innerHTML);    //=>为什么这行输出的不是lesson2的?
      alert(elem.ul.innerHTML);                //=>为什么这里是undefined?
      
};
</script>
</head>
<body>
<div id="lesson">
    <h2>第一课</h2>
    <ul>
      <li><a href="lesson1/01.html" target="_blank">控制Div属性</a></li>
      <li><a href="lesson1/02.html" target="_blank">网页换肤</a></li>

    </ul>
    <h2>第二课</h2>
    <ul>      
      <li><a href="lesson2/01.html" target="_blank">百度输入法</a></li>
      <li><a href="lesson2/02.html" target="_blank">点击Div,显示其innerHTML</a></li>
      <li><a href="lesson2/03.html" target="_blank">求出数组中所有数字的和</a></li>

      </ul>
    <h2>第三课</h2>
    <ul>      
      <li><a href="lesson3/01.html" target="_blank">用typeof查看数据类型</a></li>

      
    </ul>
    <h2>第四课</h2>
    <ul>
            <li><a href="lesson4/01.html" target="_blank">setTimeout应用</a></li>
      <li><a href="lesson4/02.html" target="_blank">自动播放——幻灯片效果</a></li>
      <li><a href="lesson4/03.html" target="_blank">自动改变方向——幻灯片效果</a></li>
      <li><a href="lesson4/04.html" target="_blank">agruments应用——求出函数参数的总合</a></li>
      
    </ul>
</div>
<div id="lesson2">
<h2>第二组的UL</h2>
    <ul>
      <li>第一行1111111</li>
    </ul>
    <ul>
      <li>第二行22222222</li>
    </ul>
</div>
</body>
</html>

请问:
alert(elem.oParent.innerHTML);   //=>这行输出的是lesson2的,没有错误。
alert(elem.ul.innerHTML);         //=>为什么这么写输出的不是lesson2的?


tonghu008 发表于 2015-12-7 14:21:24

get.byTagName("ul", this.oParent)
执行时this.oParent的值其实是空

tonghu008 发表于 2015-12-7 14:21:27

get.byTagName("ul", this.oParent)
执行时this.oParent的值其实是空

chaliboy 发表于 2015-12-7 23:23:19

谢谢,被迷惑了
页: [1]
查看完整版本: 求高手解答