2013-06-25 22 views
5

私の質問のタイトルに関連するスレッドが多数あります。ここで要素IDをJavascript関数に渡す

は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.idmyFuncの機能、または他のいくつかの問題を渡しません。

問題が何ですか?

ご協力いただければ幸いです。 http://jsfiddle.net/h7kRt/1/

あなたはあなたのコードがよさそうだし、それが通常のページ内で動作しますNo-wrap in <head>

に左上にjsfiddleに変更する必要があります。この

+3

はあなたのフィドルを取り、1つの事を変え、これが働いた:http://jsfiddle.net/h7kRt/2/ – MisterBla

答えて

7

:このため

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

、あなたの関数myFuncはそうではありませんグローバルスコープではありませんあなたのhtmlボタンで利用可能です。

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

をし、その機能は、グローバルスコープとあなたのHTMLボタンに利用可能である:セルジオようNo-wrap in <head>にオプションを変更することにより、あなたのコードが包まれていません示唆しています。

6

チェック。 jsfiddleでは、関数がロードハンドラ内で定義されていたため、異なるスコープにあります。ノー・ラップに変更することで、グローバル・スコープで使用でき、必要に応じて使用することができます。あなたがスクリプトブロックに入力するコードがwindow.onloadで実行される機能でラップされ、デフォルトでjsFiddleで

+0

はい、*この作業の理由*説明するとよいでしょう... – lonesomeday

+1

また、サードパーティのサイトに頼るのではなく、ここにコードを実際に組み込むといいでしょう。 – nothrow

+1

@Yossarian、どのようなコードですか?私はコードを変更しなかっただけで、jsfiddleに "No-wrap"を入れるのを忘れてしまった。 – Sergio

3

これは動作します:

<!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> 
0

は私にとっての問題は、ちょうど良くJavascriptを知らないのと同じくらい簡単でした。私は二重引用符を使ってIDの名前を渡そうとしていました。それはうまくいった。

は、これが働いた:

validateSelectizeDropdown('#PartCondition') 

これはしませんでした:

validateSelectizeDropdown("#PartCondition") 

と機能:

function validateSelectizeDropdown(name) { 
    if ($(name).val() === "") { 
     //do something 
    } 
} 
0

あなたがこれを使用することができます。

<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> 
関連する問題