#javascript #html #jquery
Вопрос:
У меня есть HTML, как показано ниже,
<input class="btn btn-primary" id ="b1" type="button" value="Blue">
<input class="btn btn-primary" id ="b2" type="button" value="orange">
<input class="btn btn-primary" id ="b3" type="button" value="green">
Я не хочу брать значение из HTML. Как показано ниже,
$(#b1).attr('value') or
var val = document.getElementById(ele.id).value;
Вместо этого, I need the value from the JS
.
default Value
Для каждой кнопки должно быть 0
. Когда я каждый раз нажимаю на кнопку, default value
. Когда он достигнет 3
, он снова должен переместиться 0
.
Нравится,
default value = default Value >= 3 ? 0 : defaultValue
$("button").click(function () {
buttonVal(this);
});
function buttonVal(ele) {
var def = [];
def = def>=3 ? 0 : def;
switch(def)
{
case 0:
def = 5;
break;
case 1 :
def = 4;
break;
default:
def = 0;
}
}
Но я использовал switch
кейс, чтобы получить default value
.
Эта строка def = def>=3 ? 0 : def;
выполняется перед переключателем.
Итак, это не сработало.
Можем ли мы реализовать другие способы, кроме switch
получения значения по умолчанию ?
Мне нужно сохранить значение по умолчанию в JS
.
Кто-нибудь может, пожалуйста, помочь?
Большое спасибо.
Комментарии:
1. Вы хотите хранить каждое входное значение по-разному. как для btn1 (0,1,, 2,3), btn2 (0,1.2.3), btn3(0,1,2,3)? Вы хотите показать это значение где-нибудь в html? В какой структуре вам нужны эти значения btn, когда вы хотите повторить в js?
2. значение кнопки-это строка, а не число? Не уверены, как вы хотите увеличить «оранжевый» на 1
3. @epascarello, мне не нужна строка из HTML, значение в HTML может быть любым. Но мне нужно установить значение только в JS, а не в HTML.
4. @Davi поделится ожидаемым результатом для этих трех кнопок
Ответ №1:
Используйте кнопки dataset
для сохранения значения.
$("button").click(function () {
let currentValue = this.dataset.value || 0;
if ( currentValue > 3) { currentValue = 0; }
this.dataset.value = currentValue;
...
});
Ответ №2:
Рассматривая ваш идентификатор кнопки в качестве ключа для хранения номера счета
const container = document.getElementById("btn-container");
const btnValue = {};
container.addEventListener("click", function(e){
// const v = e.target.value;
if(e.target.tagName.toLowerCase() === "input"){
const v = e.target.id;
btnValue[v] = !btnValue[v] ? 1 : btnValue[v]==3 ? 0 : btnValue[v] 1;
// Uncommment below code to show value on button
// e.target.value=btnValue[v];
}
console.log(btnValue);
});
<div id="btn-container">
<input class="btn btn-primary" id ="b1" type="button" value="Blue">
<input class="btn btn-primary" id ="b2" type="button" value="orange">
<input class="btn btn-primary" id ="b3" type="button" value="green">
</div>
Комментарии:
1. Спасибо за ваш ответ. Но я хочу подтвердить вам, не берем ли мы значение из HTML — «ввода», используя if(например, target.tagName.toLowerCase() === «ввод»){ } .?
2. Нет, это для проверки того , что событие щелчка происходит от элемента, имя тега
input
которого, мы сделали эту проверку, потому что мы добавили прослушиватель событий в div не на каждой кнопке ввода, она называетсяevent delegation
.3. @Navneeth, Спасибо за ваше объяснение, это так полезно. После сохранения
button value
для каждого ввода. Как установить значениеbutton value
для каждого входа. ? Потому что я пытался использоватьdocument.getElementById(v).value = btnValue
. ` Это не сработало!. I need the integer 0 ,1 ,2, 3 to be displayed on the button text for each
нажмите`.4. Внутри, если, наконец
e.target.value=btnValue[v]
, проверите обновленный ответ, просто раскомментируйте код5. Спасибо. Поскольку я новичок в JS, я не мог понять код , btnValue[v] = !btnValue[v] ? 1 : Значение btn[v]==3 ? 0 : Значение BTN[v] 1;. Не могли бы вы, пожалуйста, помочь? Большое спасибо.