2013-08-02 56 views
0

我试过寻找这个答案,似乎无法找到一个特定于此。如何更改单击按钮时的onclick函数值

我的网站有一个按钮,它看起来像这样:

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

而且在点击我要它改变为“停止”和我想的onclick功能更改为onclick="w.stop()",而不是w.start(),我想该类改变为从btn-successbtn-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功能:)

+0

你没有需要改变的onclick,只要把你的逻辑在同一个if语句您使用的是从改变VAL开始停止。另外,如果你正在使用jquery点击处理程序,你不需要将onclick放在html中 – Rooster

+0

你不想使用jQuery吗?只是简单的ole javascript? –

回答

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' /> 
+0

非常有趣,我从来不知道.attr的存在。谢谢这会对别人有帮助,并且肯定会回答我的具体问题。 – Josh

0

我认为这将是最简单的只是开始两个按钮,一个叫开始,一个叫停止,并有停止最初是隐藏的。

在你启动功能添加

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

然后你的旧按钮,它的名字和功能消失,用正确的名称新按钮和适当的功能出现。

0

而不是改变它调用的函数,使用“if”语句。不像jquery那么熟悉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 
    } 
} 
0
$(function(){$('#start').click(function() { 
    if($(this).val() == "Start"){ 
     $(this).val("Stop"); 
     play_int(); 
    } else { 
     $(this).val("Start"); 
     play_pause(); 
    } 
}); 
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 
     } 
    }); 
}); 
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') 
    } 
} 
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; 

    } 
}); 
}); 
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/

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函数(这是一个定时器应用程序):)

随时给我反馈我的解决方案。