0

javascriptを使用してページのコンテンツを変更する例を実行しようとしています。次のようなページがあるとします。

<html>
<head>
</head>
<body>
<select id="a96780" multiple="multiple" name="a96780" size="3" value="deneme">
<option selected="selected" value="#ANY">ALL</option>
<option value="1111294">Ex1</option>
<option value="1111292">Ex2</option>
<option value="1111290">Ex3</option>
</select>
</body>
</html>

ページが読み込まれたときに、すべてのオプションEx1、Ex2、Ex3(タイプを非表示またはその他の方法で設定)を閉じられるようにしたいと思います。これを達成するために、私はオンラインの指示に従いましたが、それを行うことによってそうすることができませんでした:

<script type="text/javascript">

function myFunction()
{
var selectBox = document.getElementById("a96780");
alert("smt");
alert(selectBox.name);
}

myFunction();

</script>

上記のスクリプトでは、要素の名前を出力して、実際に要素を保持していることを確認しようとしています。ただし、最後の行は印刷されません。要素がselectBoxとして初期化されていることを確認するにはどうすればよいですか?また、そこからどのように進める必要がありますか。オプション値は、「Ex1、Ex2、Ex3」の項目を参照するのに十分でしょうか?

編集1:htmlへのリンクがまったくなく、bodyタグを変更したり、myFunctionを開始できるボタンを配置したりすることはできません。これにより、何をするにしても、jsでのみ実行する必要があります。これに加えて、私がどのように進めるべきかについてあなたが私を導くことができればまた素晴らしいでしょう。たとえば、オプション項目をその値から参照できますか?

4

5 に答える 5

1

私の解決策は:

<html>
<head>
<script type="text/javascript">

function initialTypeCorrection()
{
    var selectBox = document.getElementById("a96780");
    if(selectBox != null)
    {
            var options = selectBox.getElementsByTagName("option");
            for (var i = 0; i < options.length; i ++) 
            {   
                // Alternative 1
                if(options[i].value=="1111294" || options[i].value=="1111292" || options[i].value=="1111290")
                {
                    options[i].disabled = "true"; 
                    options[i].text = ""; 

                }
            }
    }

}
window.onload = initialTypeCorrection;

</script>
</head>
<body>
<select id="a96780" multiple="multiple" name="a96780" size="4">
<option selected="selected" value="#ANY">all</option>
<option value="1111294">a1</option>
<option value="1111292">a2</option>
<option value="1111290">a3</option>
</select>
</body>
</html>
于 2012-08-17T11:48:54.873 に答える
0

あなたは試してみたいかもしれません

<body onload="myFunction()">

スクリプトタグで呼び出す代わりに、JavaScriptがあったときにbodyタグの内容が初期化されないためです。

于 2012-08-07T07:59:34.120 に答える
0

DOMが完全にロードされるまで待つ必要があります。これは、HTMLがブラウザによって理解され、整理されていることを意味します。それ以前にJavaScriptを実行すると、要素が存在しないため、操作または印刷されません。

onloadDOMがロードされるのを待つ1つの方法は、bodyタグの関数呼び出しを入れることです...

<body onload="myFunction();">
于 2012-08-07T08:00:17.590 に答える
0

これが実際の例です:(あなたのコードの)

http://jsfiddle.net/44fQX/

問題があれば質問してください:)

于 2012-08-07T08:02:26.053 に答える
0

質問のこの部分を再確認します。「ページが読み込まれたときに、Ex1、Ex2、Ex3のすべてのオプション(タイプを非表示またはその他の方法で設定)を閉じることができるようにしたいと思います。」

関数closeAllOptions(){
    var slc = document.getElementById( "a96780")、i、opt;
    for(i = 0; opt = slc [i]; i ++){
        if(opt.value!= "#ANY"){
            opt.disabled = true;
            // アップデート
            opt.style.display = "none";
        }
    }            
}
関数relaseAllOptions(){
    var slc = document.getElementById( "a96780")、i、opt;
    for(i = 0; opt = slc [i]; i ++){
        opt.disabled = false;
        // アップデート
        opt.style.display = "";
    }            
}

テスト: http: //jsfiddle.net/44fQX/1/

更新 http://jsfiddle.net/44fQX/3/

于 2012-08-07T08:45:51.810 に答える