1

次のようにHTMLで定義された一連のラジオボタンがあります。

<input type="radio" name="group" id="rad1" value="rad1" onClick="doStuff(this.id)">Option 1<br>
<input type="radio" name="group" id="rad2" value="rad2" onClick="doStuff(this.id)">Option 2<br>

タグの直前に</body>、次の JavaScript 動作を定義しています。

   <script type="text/javascript">
       /*<![CDATA[*/                   
       function doStuff(var id){
           alert("Doing stuff!");
       }
       /*]]>*/
   </script>

プログラムを実行すると、ブラウザ ウィンドウに期待どおりにページが読み込まれ、ラジオ ボタンをクリックできるようになります。ただし、doStuff()関数が呼び出されることはありません (これもブレークポイントを使用して検証しました)。

インラインが違いを生むかどうかを確認するために次のことも試しましたが、JavaScript がまったく呼び出されないようです。

<script type="text/javascript">
       /*<![CDATA[*/   
       alert("JavaScript called!");
       main();
       function main(){
            var group = document.getElementsByName('group');
                for(var i=0; i<group.length; i++){
                    group[i].onclick = function(){
                        doStuff(this.id);
                    };
                }
       }
       /*]]>*/
</script>

私の質問は、このコンテキストで HTML と JavaScript を使用して特別に行う必要があることはありますか? 私の質問は、インライン関数呼び出しを使用する必要があるかどうか、またはこれがコードを記述するためのお気に入りの方法であるかどうかではありません。

4

1 に答える 1

3

関数宣言が正しくありません。パラメーターの前に「var」があってはなりません。

function doStuff (id) {
   alert("Doing stuff!");
}
于 2013-10-19T21:55:18.200 に答える