以下代码放在一个.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>
我补充下上面的回答,上面说了返回为"",而你做的判断代码 if (s != null)看似是对的,但是实际上这里是有问题的,简单的你可以做个测试,让s="";然后在运行if(s!=null)看下结果,结果会让你非常的惊奇,因为竟然这个判断返回的是true....
你这里做判断的时候应该是if(s!=null && s!="")
很明显如果 sURL.indexOf("?") > 0 将会返回"",自然document.getElementById('one' + s),找不到对象!!,再改进一下你的程序