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ます。それを呼び出すと、DOMにそのような要素が存在しないため、明らかに間違っている関数に渡されるものが得substring(1)られます。paramname=paramvaluedocument.getElementById

を使用し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 に答える