2013-06-25 131 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>