21

私の質問のタイトルに関連する多くのスレッドを見てきました。

HTML コードは次のとおりです。

<button id="button1" class="MetroBtn" onClick="myFunc(this.id);">Btn1</button>
<button id="button2" class="MetroBtn" onClick="myFunc(this.id);">Btn2</button>
<button id="button3" class="MetroBtn" onClick="myFunc(this.id);">Btn3</button>
<button id="button4" class="MetroBtn" onClick="myFunc(this.id);">Btn4</button>

そして、非常に単純な JS 関数がここにあります:

function myFunc(id){
        alert(id);
}

JsFiddleで確認できます。

問題は :

私にはわからない、おそらく機能this.idしないmyFunc、または他の問題があります。

どうしたの ?

どんな助けでも大歓迎です。

4

5 に答える 5

14

これはうまくいきます:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript">
            function myFunc(id)
            {
                alert(id);
            }
        </script>
    </head>

    <body>
        <button id="button1" class="MetroBtn" onClick="myFunc(this.id);">Btn1</button>
        <button id="button2" class="MetroBtn" onClick="myFunc(this.id);">Btn2</button>
        <button id="button3" class="MetroBtn" onClick="myFunc(this.id);">Btn3</button>
        <button id="button4" class="MetroBtn" onClick="myFunc(this.id);">Btn4</button>
    </body>
</html>
于 2013-06-25T08:11:56.763 に答える
10

デフォルトでは、jsFiddle では、スクリプト ブロックに入力するコードは、window.onload で実行される関数にラップされます。

<script type='text/javascript'>//<![CDATA[ 
    window.onload = function () {
        function myFunc(id){
            alert(id);     
        }
    }
//]]>  
</script>

このため、関数myFuncはグローバル スコープにないため、html ボタンでは使用できません。オプションをNo-wrap in <head>Sergio が示唆するように変更すると、コードはラップされません。

<script type='text/javascript'>//<![CDATA[ 
    function myFunc(id){
       alert(id);     
    }
//]]>  
</script>

そのため、関数はグローバル スコープにあり、html ボタンで使用できます。

于 2013-06-25T08:10:16.127 に答える
8

これを使用できます。

<html>
    <head>
        <title>Demo</title>
        <script>
            function passBtnID(id) {
                alert("You Pressed:  " + id);
            }
        </script>
    </head>
    <body>
        <button id="mybtn1" onclick="passBtnID('mybtn1')">Press me</button><br><br>
        <button id="mybtn2" onclick="passBtnID('mybtn2')">Press me</button>
    </body>
</html>
于 2017-11-29T05:54:42.920 に答える
7

これを確認してください:http://jsfiddle.net/h7kRt/1/

左上のjsfiddleを次のように変更する必要がありますNo-wrap in <head>

あなたのコードは見栄えがよく、通常のページ内で機能します。jsfiddle では、関数はロード ハンドラ内で定義されていたため、別のスコープにあります。No-wrap に変更することで、グローバル スコープになり、必要に応じて使用できます。

于 2013-06-25T08:06:26.577 に答える
0

私にとっての問題は、Javascript をよく知らないという単純なことでした。シングルを使用する必要があったときに、二重引用符を使用してIDの名前を渡そうとしていました。そして、それはうまくいきました。

これはうまくいきました:

validateSelectizeDropdown('#PartCondition')

これはしませんでした:

validateSelectizeDropdown("#PartCondition")

そして機能:

    function validateSelectizeDropdown(name) {
    if ($(name).val() === "") {
         //do something
    }
}
于 2016-11-07T15:17:15.450 に答える