По заданию нужно сделать чтобы при нажатии на кнопку "Start" она изменяла свою подпись на "Stop" и наоборот.
Пытался сделать так:
$(document).ready(function() {
$('#start').click(function() {
$(this).attr('id', 'stop');
$(this).val('Stop');
});
$('#stop').click(function() {
$(this).attr('id', 'stop');
$(this).val('Stop');
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="start" value="Start" />
Не работает.
Как можно реализовать?
var btn = document.querySelector('#start');
btn.addEventListener('click', function() {
btn.value = (btn.value == 'Start' ? 'Stop' : 'Start');
})
<input type="button" id="start" value="Start" />
Если вы хотите менять только сообщение, то зачем же меняете еще и ID
кнопки?
Наиболее простой и, вероятно, понятный для вас код будет таким
$("#start").click(function(){
var v = $(this).val();
switch(v){
case 'start': v = 'stop'; break;
case 'stop': v = 'start'; break;
}
$(this).val(v);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="start" value="start"/>
Хотя, это возможны и более короткие варианты записи, приводящие к тому же эффекту.
$("#btn1").click(function(){
var msgs = ['stop', 'start'];
var v = $(this).val();
$(this).val( msgs[ +(v == 'stop') ] );
});
$("#btn2").click(function(){
var cfg = { stop: 'start', start: 'stop' };
var v = $(this).val();
$(this).val( cfg[v]);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="btn1" value="start"/>
<input type="button" id="btn2" value="start"/>
и прочие вариации, например, используя data-атрибуты
Вариант с созданием класса Toggle
function Toggle(values) {
//сырой массив
this.raw = values;
//текущий индекс
this.head = 0;
//итератор
this.iter = function() {
this.head = (this.head < this.raw.length - 1) ? this.head + 1 : 0;
}
//получить текущее значение массива
this.getCurrent = function () {
return this.raw[this.head];
}
}
window.onload = function () {
//объявление
var tog = new Toggle(["start","stop"]);
//добавление элемента, это можно было сделать при инициалиации но здесь оно нужно для наглядности
tog.raw.push("pause");
var bind = document.getElementById("bind");
bind.value = tog.getCurrent();
bind.addEventListener("click", function() {
//итерируемся
tog.iter();
bind.value = tog.getCurrent();
});
}
<input type="submit" value="" id="bind">
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Нужно объединить множество точек в кластерыДля этого необходимо их сначала получить и поместить в массив
Имеется попап, который на момент запуска кода еще не существует в DOM и добавляется он туда только при определенных действиях пользователя...