我是javascript新手。我希望能够控制其他复选框中的复选框。我的问题是:
javascript是否具有某种“ this”,我可以用来将clicked元素发送到函数而不必在函数中“获取”?(请参见下面的代码)
此代码有效:
<input type="checkbox" id="checkBox1" onclick="toggleCheckBox('checkBox1', 'checkBox2')">Check Box 1</input>
<input type="checkbox" id="checkBox2">Check Box 2</input>
function toggleCheckBox(checkBox1, checkBox2) {
var cb1 = document.getElementById(checkBox1);
var cb2 = document.getElementById(checkBox2);
if (cb1.checked == true) {
cb2.checked = true;
} else {
cb2.checked = false;
};
};
这样的东西存在吗?
<input type="checkbox" id="checkBox1" onclick="toggleCheckBox(this, 'checkBox2')">Check Box 1</input>
<input type="checkbox" id="checkBox2">Check Box 2</input>
function toggleCheckBox(checkBox1, checkBox2) {
var cb2 = document.getElementById(checkBox2);
if (checkBox1.checked == true) {
cb2.checked = true;
} else {
cb2.checked = false;
};
};
答案 0 :(得分:2)
onclick本身向您的处理函数发送事件。在这种情况下,您可以检查其目标:
<input type="checkbox" id="checkBox1" onclick="toggleCheckBox">Check Box 1</input>
<input type="checkbox" id="checkBox2" onclick="toggleCheckBox">Check Box 2</input>
function toggleCheckBox(e) {
console.log(e.target);
}
这应该使您入门;然后可以检查e.target以查看它是checkBox1还是checkBox2等。
答案 1 :(得分:1)
如果将来需要jQuery。您可以使用此版本。
$.fn.toggleCheckBox = function(e) {
const nextCheckbox =$(this).data('checkbox-click');
alert(nextCheckbox);
$('#'+nextCheckbox).prop('checked', true);
};
$('input[data-checkbox-click]').click(function() {
$(this).toggleCheckBox();
});
您需要添加此数据属性
data-checkbox-click="checkBox2"
您要收听的地方,单击,然后将相关的#ID设置为值。
答案 2 :(得分:1)
您可以尝试以下方法:
<script>
function toggleCheckBox(checkBox1) {
checkBox1.nextElementSibling.checked=checkBox1.checked;
};
</script>
<input type="checkbox" id="checkBox1" onclick="toggleCheckBox(this)">Check Box 1</input>
<input type="checkbox" id="checkBox2">Check Box 2</input>
但是,您的答案:
有点“是”!此功能的名称为propagation
或bubbling
。
此答案支持Two Way
效果:
<div onclick="toggleCheckBox(event)">
<input type="checkbox" id="checkBox1">Check Box 1</input>
<input type="checkbox" id="checkBox2">Check Box 2</input>
</div>
<script>
function toggleCheckBox(ev) {
var t=(window.event||ev).target;
if(t.tagName.toLowerCase()=="input"){
(t.nextElementSibling||t.previousElementSibling).checked=t.checked;
};
};
</script>
提示:最好将输入的标签与此类似(在这种情况下,上面的代码必须以此为基础进行更改):
<label><input type='checkbox'/> CheckBox1</label>
答案 3 :(得分:1)
您拥有的代码有效:
<input type="checkbox" id="checkBox1" onclick="toggleCheckBox(this, 'checkBox2')">Check Box 1</input>
<input type="checkbox" id="checkBox2">Check Box 2</input>
function toggleCheckBox(checkBox1, checkBox2) {
var cb2 = document.getElementById(checkBox2);
if (checkBox1.checked == true) {
cb2.checked = true;
} else {
cb2.checked = false;
};
};
当您的函数被多个对象使用时,将使用this
对象,并且该函数仅作用于单个对象。