2

HTML Select の javascript 関数 onChange を呼び出そうとしています。

HTML ドキュメント:

<select name="network" onChange="test(this)">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>
<script>
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
</script>

最初のアラートは受け取りますが、2 番目のアラートは受け取りません。私は何が欠けていますか?

編集:コードは実際に機能しますが、何らかの理由で、JSFiddle で個別のペインを使用できません。それについて何か考えはありますか?

4

4 に答える 4

2

jsFiddleがコードを実行すると、次のようなクロージャーでコードがラップされます。

<script type='text/javascript'>//<![CDATA[ 
window.onload=function(){
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
}//]]>  
</script>

したがって、「test」を定義した関数は、グローバル関数として使用できないため、selectタグに配置したインラインJavaScriptからはアクセスできません。

代わりにjQueryを使用して、次のようなイベントハンドラーをアタッチする方法を学ぶことを強くお勧めします。

<select name="network">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>

$(function () {
    console.log("oh look, the document is ready");

    $("[name=network]").change(function () {
        console.log("now my code is groovy, but i might want to use an id rather than name selector"); 
    });
});
于 2013-03-14T20:20:52.363 に答える
0

スクリプトはOKです。両方に同じ値(「テスト」)を入力するだけですalert

<script>
    alert("test1");
    var URLArray = [];
    function test(str){
        alert("test2");
    }
</script>

または多分最終的な目標はこれです...

function test(elm){
    alert(elm.value);
}
于 2013-03-14T20:01:00.070 に答える
0

以下のように、スクリプトを最初の呼び出しの上に移動してみてください。

<script>
    alert("test");
    var URLArray = [];
    function test(str){
        alert("test");
    }
</script>


<select name="network" onChange="test(this)">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>

ご覧のとおり、これはjsfiddleです。JavaScriptをヘッダーに配置するように設定しています。

于 2013-03-14T20:08:06.957 に答える
0

パナヨットが言ったように、あなたのコードは問題ありませんが、console.log()代わりにalert. アラートに従うよりも、コンソールで表示する方がはるかに簡単です。

<select name="network" onChange="test(this)">
    <option value="net1">Net1</option>
    <option value="net2">net2</option>
</select>
<script>
    console.log("test1")
    var URLArray = [];
    function test(str){
        console.log("test2");
    }
</script>
于 2013-03-14T20:12:20.273 に答える