首页 新闻 搜索 专区 学院

JS选项卡的问题 急

0
悬赏园豆:15 [已解决问题] 解决于 2010-03-26 13:19

以下代码放在一个.net的用户控件中,当点击选项卡中的链接跳转后记住跳转前选中的选项卡

为什么 var menu = document.getElementById('one' + s)这句代码的 menu对象取不到值为空呢?

 

<script>
    function setTab(name, cursel, n) {
        for (var i = 0; i < n; i++) {
            var menu = document.getElementById(name + i);
            var con = document.getElementById("con_" + name + "_" + i);
            menu.className = i == cursel ? "hover" : "";
            con.style.display = i == cursel ? "block" : "none";
        }
    }
    function getQueryString(key) {
        var value = "";

        var sURL = window.document.URL;

        if (sURL.indexOf("?") > 0) {
            var arrayParams = sURL.split("?");

            var arrayURLParams = arrayParams[1].split("&");

            for (var i = 0; i < arrayURLParams.length; i++) {
                var sParam = arrayURLParams[i].split("=");

                if ((sParam[0] == key) && (sParam[1] != "")) {
                    value = sParam[1];
                    break;
                }
            }
        }
        return value;
    }

    var s = getQueryString('sel');
    if (s != null) {
        var menu = document.getElementById('one' + s);
        var con = document.getElementById("con_" + 'one' + "_" + s);
        menu.className = s == s ? "hover" : "";
        con.style.display = s == s ? "block" : "none";
    }
</script>
<div id="TabbedPanels1" class="TabbedPanels">
    <div id="Tab1">
        <div class="Menubox">
            <ul>
                <li id="one0" onclick="setTab('one',0,3)" class="hover">AA</li>
                <li id="one1" onclick="setTab('one',1,3)">BB</li>
                <li id="one2" onclick="setTab('one',2,3)">CC</li>
            </ul>
        </div>
        <div class="Contentbox">
            <div id="con_one_0" class="hover">
                AAAAAAAAAAAAAAA
            </div>
            <div id="con_one_1" style="display: none">
                <a href="SalesReport.aspx?sel=2">啊啊啊 </a>
                <br />
                <a href="SalesReport.aspx?sel=1">是是是 </a>
                <br />
                <a href="SalesReport.aspx?sel=1">大大大 </a>            </div>
            <div id="con_one_2" style="display: none">
                CCCCCCCCCCCCCCC
            </div>
        </div>
    </div>
</div>

问题补充: 修改后的脚本 实现了我想要的效果 要是还有更好的方法希望大家指点 <script> function setTab(name, cursel, n) { for (var i = 0; i < n; i++) { var menu = document.getElementById(name + i); var con = document.getElementById("con_" + name + "_" + i); menu.className = i == cursel ? "hover" : ""; con.style.display = i == cursel ? "block" : "none"; } } function getQueryString(key) { var value = ""; var sURL = window.document.URL; if (sURL.indexOf("?") > 0) { var arrayParams = sURL.split("?"); var arrayURLParams = arrayParams[1].split("&"); for (var i = 0; i < arrayURLParams.length; i++) { var sParam = arrayURLParams[i].split("="); if ((sParam[0] == key) && (sParam[1] != "")) { value = sParam[1]; break; } } } return value; } var s = getQueryString('sel'); if (s == "") var s = "0"; window.onload = function() { setTab('one', s, 3); }; </script>
凭栏处的主页 凭栏处 | 初学一级 | 园豆:45
提问于:2010-03-26 11:32
< >
分享
最佳答案
0

我补充下上面的回答,上面说了返回为"",而你做的判断代码 if (s != null)看似是对的,但是实际上这里是有问题的,简单的你可以做个测试,让s="";然后在运行if(s!=null)看下结果,结果会让你非常的惊奇,因为竟然这个判断返回的是true....

你这里做判断的时候应该是if(s!=null && s!="")

收获园豆:15
西越泽 | 专家六级 |园豆:10633 | 2010-03-26 12:49
呵呵 非常感谢您的帮助
凭栏处 | 园豆:45 (初学一级) | 2010-03-26 13:17
其他回答(1)
0

很明显如果 sURL.indexOf("?") > 0 将会返回"",自然document.getElementById('one' + s),找不到对象!!,再改进一下你的程序

ForFreeDom | 园豆:589 (小虾三级) | 2010-03-26 12:13
但是我在后面判断了是否为空啊 var s = getQueryString('sel'); if (s != null) {}当部位空的时候才调用那个方法的
支持(0) 反对(0) 凭栏处 | 园豆:45 (初学一级) | 2010-03-26 12:25
@凭栏处: ""和null是两个意思
支持(0) 反对(0) ForFreeDom | 园豆:589 (小虾三级) | 2010-03-26 12:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册