2013-06-25 162 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功能,否則一些問題。

有什麼問題?

任何幫助,將不勝感激。

+3

把你的小提琴和改變一樣東西,這個工作:http://jsfiddle.net/h7kRt/2/ – MisterBla

回答

7

在的jsfiddle默認情況下,您鍵入到腳本塊中的代碼被包裹在執行的window.onload函數:

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

正因爲如此,你的函數myFunc是不是在全球範圍,從而不可用於您的HTML按鈕。通過改變選項No-wrap in <head>爲塞爾吉奧表明你的代碼不裹:

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

,因此函數是在全球範圍內,並提供給您的HTML按鈕。

6

檢查:http://jsfiddle.net/h7kRt/1/

你應該在的jsfiddle上更改左上角到No-wrap in <head>

您的代碼看起來不錯,它會正常頁面內工作。在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>