我正在一个小型网站上工作,我希望根据URL中传递的变量切换标签。这是我目前编写的逻辑。
var hash = window.location.href.split("#");
var count = hash.length;
if(count > 0){
var blockid = hash[1];
document.getElementById(hash[1]).css("display","block");
//document.getElementById("showthisdiv").css("display","block"); - this works
document.getElementById("broken_href").innerHTML = blockid;
}
<div class="broken_href"> </div>
hash [1]是我要更改其样式的div的名称。如果我更改散列[1]并在GetElementById中写入div的名称,它可以正常工作。 也是为了测试我创建了一个虚拟div来查看blockid所持有的值。它正确传递了值。
测试的URL类似于:
http://localhost/test/#showthisdiv
我需要做些什么来解决这个问题?
答案 0 :(得分:2)
您正在尝试在DOM节点上使用css jquery方法,而不是在jq对象
上请改用:
$('#'+hash[1]).show();
答案 1 :(得分:2)
此行是您的问题
document.getElementById(hash[1]).css("display","block");
这个.css方法是一个jQuery方法,在基本的Javascript中不可用。
您可以使用:
document.getElementById(hash[1]).style.display = "block";
或者包含jQuery并使用:
$("#"+hash[1]).css("display","block");
答案 2 :(得分:0)
使用
var hash = window.location.hash;
然后
document.getElementById(hash.substring(1)).style.display = "block";
如果你使用jQuery,你可以直接这样做:
var hash = window.location.hash;
...
$(hash).show();
window.location.hash
返回如下值:#some-hash
。这就是您在调用substring(1)
时需要使用getElementById
的原因。