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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王睿 中级黑马   /  2012-2-19 15:32  /  2572 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王睿 于 2012-2-20 02:50 编辑
  1. var name;
  2. function trcolor()
  3. {
  4.         var tabNode = document.getElementsByTagName("table")[0];
  5.         var trs = tabNode.rows;
  6.         for(var x = 1; x<trs.length-1; x++)
  7.         {
  8.                 if(x%2==1)
  9.                         trs[x].className = "one";
  10.                 else
  11.                         trs[x].className = "two";
  12.                 trs[x].onmouseover = function ()
  13.                 {
  14.                         name = this.className;
  15.                         this.className = "over";        
  16.                 };
  17.                 trs[x].onmouseout = function()
  18.                 {
  19.                         this.className = name;        
  20.                 };
  21.         }
  22.         
  23. }
  24. window.onload = trcolor;

复制代码
这段代码中开头不声明var name 也能实现效果(ie8),那声明和不声明有什么区别吗?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

5 个回复

倒序浏览
声明在外面就是全局的,js是弱语言,很弱很弱。

评分

参与人数 1技术分 +1 收起 理由
admin + 1 占位很厉害哦!

查看全部评分

回复 使用道具 举报
javascript 是弱类型的语言,如果量还未进行过声明,该变量会自动声明。
但是最好还量加上var,软件开发毕竟还是要给别人看的,这样容易让别人区分你这个名师在前面是否已被定义与使用

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
从你的代码看,是要实现隔行变色是吧

1.首先,你var tabNode = document.getElementsByTagName("table")获得所有的表对象
2.但在取行的时候,你那样是取不到行对象的.
3.id,name,标签都不是

所以你这个代码不能实现,不只是因为变量声明在哪的问题,
当然,要声明肯定是在trcolor()函数里面,下面的代码有不如意的地方,
欢迎指出.你用的是通过直接操作css样式,和你的代码稍微有点不同.

<!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>
    <title></title>

    <script src="../js/jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
        /**
            js版隔行变色
        */
        function changeColor() {
            var tableMain = document.getElementById("talbeMain");//通过id获得表格对象
            if (tableMain != null) {
                var trs = tableMain.getElementsByTagName("tr");//通过标签获得行
                for (var i = 0; i < trs.length; i++) {
                    var tr = trs[i];
                    //tr.style.crusor = "hand";//firfox不支持,ie通过
                    tr.style.cursor = "pointer";//设置鼠标变为小手状
                    tr.onmouseover = function() {
                        this.style.backgroundColor = "red";//背景变为红色
                    }
                    tr.onmouseout = function() {
                        this.style.backgroundColor = "White";//背景变为白色
                    }
                }
            }
        }
        window.onload = changeColor;
        /**
           JQuery版隔行变色
           1.首先通过 $("#talbeMain tr")取得行对象
           2.设置鼠标移动到行的事件
           3.链式编程
        */
        $(function() {
            $("#talbeMain tr").mouseover(function() {
            $(this).css("backgroundColor", "red").css("cursor","pointer");
               
            }).mouseout(function() { $(this).css("backgroundColor","White")});
        });
    </script>
</head>
<body>
     <table id="talbeMain">
        <tr><td>first</td></tr>
        <tr><td>second</td></tr>
        <tr><td>thrid</td></tr>
        <tr><td>four</td></tr>
    </table>
</body>
</html>

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
对javascript不是很理解,请问楼主javascript很重要吗?开发什么时候经常用呢?

点评

DOM解析  发表于 2012-2-20 19:11
回复 使用道具 举报
蒙武辉 发表于 2012-2-19 20:47
对javascript不是很理解,请问楼主javascript很重要吗?开发什么时候经常用呢? ...

这个比java好学多了,在做网页动态效果时必用,其他方面就不知道了,我也是0基础自学呢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马