【问题标题】:Javascript: Run a script depending on which button is clickedJavascript:根据单击的按钮运行脚本
【发布时间】:2013-02-23 05:48:33
【问题描述】:

请有人告诉我。我试图实现一个简单的 Javascript 函数。这个想法是,根据单击的按钮运行条件脚本。似乎无法弄清楚:

<script type="text/javascript">

function whichButton(){

if(//Button 1 is clicked...){
    //Run script 1   
 }
else if(//Button 2 is clicked){
    //Run script 2  
 }
else if(//Button 3 is clicked){
    //Run  script 3  
 }
else if(//Button 4 is clicked){
    //Run script 4  
 }
else{
    //Do nothing
 }
}
</script>

<form id="form1" onSubmit="whichButton();">
<button id="btn1">Button 1</button><br/>
<button id="btn2">Button 2</button><br/>
<button id="btn3">Button 3</button><br/>
<button id="btn4">Button 4</button><br/>
</form>

提前致谢!

【问题讨论】:

  • “运行脚本”是什么意思?你的意思是“下载一个新的脚本文件并运行它”还是只是“运行不同的功能”?

标签: javascript forms function button


【解决方案1】:

使用 AJAX 获取脚本,将它们插入 DOM 中的某个位置,然后使用 initialize() 运行它们。

$.get('js/script1.js', function(data) {
    $('#dummydiv').html(data);
    initialize();
});

【讨论】:

  • 这和这个问题有什么关系?
  • 哦。我将“条件”脚本误解为“动态”之类的。
  • 好的,这很公平,但是 jQuery 是什么?这里没有 jQuery。
  • 嗯,写出来的解决方案还是可以套用vanilla JS的。
  • 那么为什么不在 vanilla JS 中提供呢?为什么是 jQuery?
【解决方案2】:

将 from 传递给您的函数,然后找到活动元素:

<form id="form1" onSubmit="whichButton(this);">
    Buttons...
</form>

还有 JavaScript:

function whichButton(form) {
    var clicked = form.querySelector(":active");
    switch(clicked.id) {
    case "btn1":
        // do stuff
        break;
    // add more cases
    }
}

请注意,我对此不确定,但我已经对其进行了测试,它似乎可以工作。请注意,IE7 及更早版本不支持:active,我不知道如何在这些旧版本中使其工作。

编辑:这是一个 Fiddle 来演示。

【讨论】:

  • @netizen0911 是的
【解决方案3】:

您想将 onclick 处理程序添加到按钮标签:

<script type="text/javascript">    
function whichButton(buttonElement){
  alert(buttonElement.id);
  var buttonClickedId = buttonElement.id;
  if( buttonClickedId === 'btn1' ){
     // do btn1 stuff
  }
  else if( buttonClickedId === 'btn2' ){
     // do btn2 stuff
  }
  // ...
  else{
     // don't know which button was clicked
  }

}
</script>

<form id="form1" >
<button id="btn1" onclick="whichButton(this)">Button 1</button><br/>
<button id="btn2" onclick="whichButton(this)">Button 2</button><br/>
<button id="btn3" onclick="whichButton(this)">Button 3</button><br/>
<button id="btn4" onclick="whichButton(this)">Button 4</button><br/>
</form>

编辑:

要根据单击的按钮运行不同的代码,请使用类似于我在上面编辑过的原始帖子的 IF 语句。 // 你可以去掉那个警报,或者移动到每个 if/else if 范围内。

【讨论】:

  • 这似乎可以工作,谢谢!但是我怎样才能为每个特定按钮运行不同的代码块呢?就像单击 btn1 时运行代码 1,如果单击 btn2 时运行代码 2,等等....?我应该在哪里放置条件语句?
  • @user1881287 -- 查看我的编辑 cmets 和 whichButton 的函数体,我在其中添加了您的 if/else if 语句,稍作更改以匹配按钮的 id 属性。
【解决方案4】:

您可以使用 jQuery 尝试以下操作:

<script type="text/javascript">
        $(document).on("click", "button.btn", function(){
                console.log("You clicked " + $(this).html());
                return false;
        });
</script>
<form>
<button class="btn">Button 1</button><br/>
<button class="btn">Button 2</button><br/>
<button class="btn">Button 3</button><br/>
<button class="btn">Button 4</button><br/>
</form>

【讨论】:

  • @kolink -- 为什么 jquery 不好?
  • 对于初学者来说,OP 没有使用它。其次,这里完全没有必要。第三,它没有以有效的方式回答问题,因为它不再使用onSubmit 事件。
  • 并添加onclick foreach按钮更好更高效?
猜你喜欢
  • 2016-07-15
  • 2017-02-27
  • 2017-04-08
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
相关资源
最近更新 更多