我有两个(或更多)按钮具有相同的类。我想编写一个函数,将变量设置为单击按钮的值,并希望将此函数应用于我的所有按钮。我已经阅读了关于这个'这个'关键字(such as this one),但仅当我将onclick
方法放在内联中时我才会这样做。
这是我的代码:
<button class='button' type='button' value='X'>Button 1</button>
<button class='button' type='button' value='Y'>Button 2</button>
var button = document.getElementByClass('button');
var value;
function selectValue(clicked_button) {
value = clicked_button.value;
}
button.onclick = selectValue;
另外,我不确定但是我是否需要使用循环将函数应用于每个按钮?如:
for(var i = 0; i <= button.length; i++) {
button[i].onclick = selectValue;
}
答案 0 :(得分:1)
document.querySelectorAll("button")
.forEach(btn => btn.addEventListener("click", e => selectValue(btn)));
答案 1 :(得分:1)
getElementByClass
不存在,请改用querySelector
。 建议:改为使用addEventListener
。
var buttons = document.querySelectorAll('.button');
var value;
function selectValue() {
value = this.value;
console.log(value);
}
for (btn of buttons)
btn.onclick = selectValue;
&#13;
button {
width: 70px;
height: 40px;
}
&#13;
<button class='button' type='button' value='X'>Button 1</button>
<button class='button' type='button' value='Y'>Button 2</button>
&#13;
答案 2 :(得分:1)
您的代码中存在多个错误:
getElementByClass
功能。我不知道您的代码是如何运行的。它被称为getElementsByClassName
。getElementsByClassName
会返回一个元素数组(在您的示例中为2),因此您必须遍历它并添加onclick
事件。onclick
事件处理程序中的当前按钮,请使用this
。您无法将所需的任何参数传递给函数,因为它的签名是固定的。它会传递对事件本身的引用,而不是被点击的元素,因此名称clicked_button
是欺骗性的。我们通常将该参数称为event
或e
。您可以使用event.target
访问该元素,但使用this
会更容易。试试这个(我为演示添加了console.log
行,但你不需要它):
var value;
var buttons = document.getElementsByClassName('button');
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = selectValue;
}
function selectValue() {
value = this.value;
console.log(value);
}
&#13;
<button class='button' type='button' value='X'>Button 1</button>
<button class='button' type='button' value='Y'>Button 2</button>
&#13;
答案 3 :(得分:0)
是的,您需要在HTMLCollection buttons
function selectValue(event) {
value = event.target.value;
}
var button = document. getElementsByClassName('button');
for (var i = 0; i < button.length; i++) {
button[i].onclick = selectValue;
}
答案 4 :(得分:0)
如果使用jquery,则使用以下任一方法而不进行循环。
这会为点击的按钮设置值
var valueToSet ='XX';
$(document).on('click','.button',function(){
$(本).VAL(valueToSet);
});
这将为具有类名按钮
的每个元素设置相同的值 var valueToSet ='XX';
$(document).on('click','.button',function(){
$( '按钮')VAL(valueToSet)。
});
如果除了按钮
之外还有其他带有类名按钮的元素,请使用此选项var valueToSet ='XX'; $( “button.button”)。点击(函数(){ if($(this).attr(“class”)=='button'){ $( 'button.button')VAL(valueToSet)。 } });