如何在单击按钮时更改onclick函数值

时间:2013-08-02 14:37:59

标签: javascript jquery html html5

我已经尝试过为此寻找答案,但似乎找不到具体的答案。

我的网站有一个按钮,如下所示:

<input class="btn btn-success" onclick="w.start()" type="button" value="Start" id='start' />

点击后我希望它更改为“停止”,我希望onclick功能更改为onclick="w.stop()"而不是w.start(),我希望课程从btn-success更改为到btn-danger(引导程序)

可以使用此jQuery让名称改变:

$(function () {
    $('#start').click(function () {
        $(this).val() == "Start" ? play_int() : play_pause();
    });
});

function play_int() {
    $('#start').val("Stop");
    // do start
}

function play_pause() {
    $('#start').val("Start");
    // do stop
}

但是如何让onclick函数和类更改?

特别是onclick功能:)

9 个答案:

答案 0 :(得分:2)

您有很多关于如何以不同方式处理问题的好建议 - 但没有回答您关于如何更改onclick的具体问题。在许多情况下,这是一项有用的能力 - 所以,即使你采取其他人的一般方法的建议,我也想回答你的具体问题。

这是我测试过并发现可以工作的代码:

<script>
function play_int() {
    alert("play_int was executed");
    $("#start").val("Stop");
    $("#start").attr("onclick", "play_pause()");
    // do start
}

function play_pause() {
    alert("play_pause was executed");
    $("#start").val("Start");
    $("#start").attr("onclick", "play_int()");
    // do stop
}
</script>

<input class="btn btn-success" onclick="play_int();" type="button" value="Start" id='start' />

答案 1 :(得分:0)

我认为最简单的方法就是从两个按钮开始,一个名为start,一个名为stop,最初是隐藏的。

在你的开始功能中添加

$('#start').hide();
$('#stop').show();

然后您的旧按钮及其名称和功能消失,并显示具有正确名称和正确功能的新按钮。

答案 2 :(得分:0)

不使用更改正在调用的函数,而是使用“if”语句。不像jquery那样熟悉jsery,js,但我觉得它会是这样的。

if($('#start').val = "start"){
   function play_int() {
        $('#start').val("Stop");
        // do start
   }
}
if($('#start').val = "stop"){
   function play_pause() {
        $('#start').val("Start");
        // do stop
   }
}

答案 3 :(得分:0)

$(function(){$('#start').click(function() {
   if($(this).val() == "Start"){
       $(this).val("Stop");
       play_int();
   } else {
       $(this).val("Start");
       play_pause();
   }
});

答案 4 :(得分:0)

只需使用一个事件处理程序。我会使用jQuery来检测按钮上哪个类是活动的。然后,您可以执行适当的操作。如果使用此元素,则无需在元素中设置onclick。

$(function () {
    $('#start').on('click', function() {
        if($(this).is('.btn-success')){
            $(this).removeClass('.btn-success').addClass('.btn-danger').val('Stop');
            //Do Start
        }else{
            $(this).removeClass('.btn-danger').addClass('.btn-success').val('Start');
            //Do Stop
        }
    });
});

答案 5 :(得分:0)

为什么不在每次单击按钮时调用切换功能并让它处理条件。

function toggleChange(event){
  if($('#start').val()=="Stop";
     $('#start').val("Start");
     $('#start').addClass('newClass')
     $('#start').removeClass('oldClass')
   }
   else{
      $('#start').val("Stop");
      $('#start').addClass('newClass')
      $('#start').removeClass('oldClass')
   }
}

答案 6 :(得分:0)

<input class="btn btn-success" onclick="w.start()" type="button" value="Start" id='btn' />

 $(function () {
  $('#btn').click(function () {
    var opn=$(this).val();
    switch(opn){
      case 'start':
      $(this).val("stop").removeClass('.btn-success').addClass('.btn-danger').click(w.stop); 
      break;

      case 'stop':
      $(this).val("start").removeClass('.btn-danger').addClass('.btn-success').click(w.start); 
      break;

  }
});
});

答案 7 :(得分:0)

这是一个没有jquery的解决方案

HTML

<input class="btn-success" onclick="callme(this);" type="button" value="Start"/>

JAVASCRIPT

var callme = (function() {
    var start = true;
    return function(me) {
        if(start) {
            me.value = "Stop";
            me.className = "btn-danger";
            w.start();
        } else {
            me.value = "Start";
            me.className = "btn-success";;
            w.stop();
        }
        start = !start;
    };
}());

这是小提琴http://jsfiddle.net/HhuNU/

答案 8 :(得分:0)

我查看了您的回复,找到了最适合我的解决方案:

$(function(){$('#start').click(function() {
    $(this).val() == "Start" ? play_int() : play_pause();                           
    });
});

function play_int() {
    $('#start').val("Stop");
    $('#start').addClass('btn-danger');
    $('#start').removeClass('btn-success');
    w.start();
}

function play_pause() {
    $('#start').val("Start");
    $('#start').addClass('btn-success');
    $('#start').removeClass('btn-danger');
    w.stop();
}

w.stop()和w.start()是启动计时器的另一个js的函数(这是用于计时器应用程序):)

随时向我提供有关我的解决方案的反馈。