0

我正在从一个 html 页面的查询字符串中传递 div 名称,并在另一个 html 页面上检索该 div 名称。现在我想在页面上显示特定的 div。我的代码是

function onLoad()
{    
    var divname=window.location.search.substring(1);    
    document.getElementById(divname).style.display="block";    //error is in this line
}

但我收到“预期对象”错误。请帮我

4

3 回答 3

3

window.location.search属性返回?符号后面的 URL 部分,包括?符号。

因此,例如它可能会返回?paramname=paramvalue. 当您调用substring(1)它时,您会paramname=paramvalue得到传递给document.getElementById函数的内容,这显然是错误的,因为您的 DOM 上不存在此类元素。

您可以使用following javascript function来读取查询字符串参数值:

function onLoad() {    
    var divname = getParameterByName('divname');    
    document.getElementById(divname).style.display = 'block';
}

这假设您有一个名为的查询字符串参数名称divname

?divname=some_div_name

getParameterByName如果查询字符串参数的调用方式不同,请调整传递给函数的参数。

您可能还想在代码中引入错误检查以使其更加健壮:

function onLoad() {    
    var divname = getParameterByName('divname');    
    var divElement = document.getElementById(divname);
    if (divElement != null) {
        divElement.style.display = 'block';
    } else {
        alert('Unable to find an element with name = ' + divname);
    }
}
于 2013-01-26T17:30:20.767 回答
0

我的建议是将您js放在代码的末尾html</body>标签之前)。不要使用函数。

<html>
    ...
    ...
    ...
    <body>
    ...
    ...
    ...
        <script>
            var divname=window.location.search.substring(1);    
            document.getElementById(divname).style.display="block"; 
        </script>
    </body>
</html>  
于 2013-01-26T17:54:51.810 回答
0

我已经重新编写了我的函数并且它正在工作,代码是这样的

function load()  
{  
    var divname = window.location.search.substring(1);  
    var params=divname.split('=');  
    var i=1;  
    alert(params[i].substring(0));  
    document.getElementById(params[i].substring(0)).style.display='block';  
}
于 2013-01-26T18:26:28.080 回答