将JS变量传递给getElementById

时间:2014-01-16 14:55:08

标签: javascript jquery html css

我正在一个小型网站上工作,我希望根据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

我需要做些什么来解决这个问题?

3 个答案:

答案 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的原因。