我有一个复选框,我想在检查时运行一个函数,并在未选中时运行另一个函数。我的代码是:
function showCustomer(str,str2) {
if (document.getElementById(str).checked) {
var xhttp;
if (str == "") {
document.getElementById("xxxx").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("xxxx").innerHTML = this.responseText;
}
};
xhttp.open("GET", "add.jsp?q=" + str + "&q2=" + str2, true);
xhttp.send();
}
else {
var xhttp;
if (str == "") {
document.getElementById("xxxx").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("xxxx").innerHTML = this.responseText;
}
};
xhttp.open("GET", "minus.jsp?q=" + str + "&q2=" + str2, true);
xhttp.send();
}
}
我的复选框代码是:
<input id="<%=cheque_tbl.getPRICE()%>" class="ch" type="checkbox" name="<%=cheque_tbl.getCHECKID()%>" onchange="showCustomer(this.value,this.id)">
问题是document.getElementById(str).checked
不起作用且必须是document.getElementById("str").checked
但我的复选框ID不是简单的字符串而是变量。
如何在getelement
中使用var?为什么我的代码不起作用?
答案 0 :(得分:0)
首先,您传递value, id
<input id="<%=cheque_tbl.getPRICE()%>" class="ch" type="checkbox" name="<%=cheque_tbl.getCHECKID()%>" onchange="showCustomer(this.value,this.id)">
并且您尝试使用值
进行访问document.getElementById(str).checked
因此,您没有获取元素,element.checked
将undefined
或虚假。
将其更改为,
document.getElementById(str1).checked
它应该有用。
您也可以发送元素参考。
function showCustomer(el) {
console.log(el.checked, el.value)
}
&#13;
<input
id="<%=cheque_tbl.getPRICE()%>"
class="ch"
type="checkbox"
name="<%=cheque_tbl.getCHECKID()%>"
onchange="showCustomer(this)">
<!-- ^^^^ -->
&#13;
答案 1 :(得分:0)
HTML更改:绑定复选框范围以便通过onchange函数访问它
<input id="dd" class="ch" type="checkbox" name="dd" onchange="showCustomer.apply(this,[this.value,this.id])">
JS改变:
function showCustomer(str,str2) {
if (this.checked) {
var xhttp;
if (str == "") {
document.getElementById("xxxx").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("xxxx").innerHTML = this.responseText;
}
};
xhttp.open("GET", "add.jsp?q=" + str + "&q2=" + str2, true);
xhttp.send();
}
else {
var xhttp;
if (str == "") {
document.getElementById("xxxx").innerHTML = "";
return;
}
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("xxxx").innerHTML = this.responseText;
}
};
xhttp.open("GET", "minus.jsp?q=" + str + "&q2=" + str2, true);
xhttp.send();
}
}
希望有助于解决复选框
的Document.getElementById()问题答案 2 :(得分:0)
试试这个
<input id="<%=cheque_tbl.getPRICE()%>" class="ch" type="checkbox" name="<%=cheque_tbl.getCHECKID()%>" onchange="showCustomer(this,this.id)">
并且在函数showCustomer中只使用str.checked而不是document.getElementById(str).checked。