A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM邱刚权 中级黑马   /  2013-4-7 16:16  /  1264 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM邱刚权 于 2013-4-16 17:16 编辑

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script type="text/javascript">
        function initEvent() {
            var tableMain = document.getElementById("tableMain");
            var trs = tableMain.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                var tr = trs;
                tr.onclick = TrOnClick;
                tr.style.cursor = "pointer";
            }
        }
        function TrOnClick() {
            var tableMain = document.getElementById("tableMain");
            var trs = tableMain.getElementsByTagName("tr");
            for (var i = 0; i < trs.length; i++) {
                var tr = trs;
                if (tr == this) {                                          //不懂这里this是什么意思
                    tr.style.backgroundColor = "red";
                }
                else {
                    tr.style.backgroundColor = "white";
                }
            }
        }
    </script>
</head>
<body>
<table id="tableMain">
<tr ><td>喜洋洋</td><td>100</td></tr>
<tr><td>懒洋洋</td><td>10</td></tr>
<tr><td>美洋洋</td><td>60</td></tr>
<tr><td>慢洋洋</td><td>100</td></tr>
<tr><td>软绵绵</td><td>200</td></tr>
</table>
</body>
</html>
<script type="text/javascript">
    ShowIt();
</script>

请解释下this在JS的用法




2 个回复

正序浏览
this应该是当前对象它自己吧!
     if (tr == this) {        //如果tr变量是当前单元格的话。(就如同好多单元格,但tr不一定是当前的单元格(即this))
      tr.style.backgroundColor = "red";
           }
        else {
          tr.style.backgroundColor = "white";
           }
个人意见仅供参考!
回复 使用道具 举报
大致有4种用法:函数调用,方法调用,构造函数调用,apply调用
具体地,
作为函数调用时,类似于C#中的给当前类的属性赋值,用法如下:
  1. function test() {
  2. this.a = "函数调用";
  3. alert(a);
  4. }
  5. test();
复制代码
作为构造函数调用时,this就是指通过这个构造函数创建出来的对象。例如:
  1. function test() {
  2. this.a= "构造函数调用";
  3. var o = new test();
  4. alert(o.a);
复制代码
作为方法调用时,this就是指这个上级对象。例如:
  1. function test() {
  2. alert(this.a);
  3. }

  4. var o = {};
  5. o.a = "方法调用";
  6. o.b = test;
  7. o.b();
复制代码
作为apply调用时,this指向的是apply中的第一个参数。例如:
  1. var x = 0;
  2. function test() {
  3. alert(this.a);
  4. }

  5. var o = {};
  6. o.a = "apply调用";
  7. o.b = test;
  8. o.b.apply();
  9. o.b.apply(o);
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马