【发布时间】:2013-02-07 17:28:30
【问题描述】:
我的 HTML 格式为:
====================================
<input type="checkbox" id="Red" onclick="changeURL('WineType', 'Red')"> Red (30499)
<input type="checkbox" id="White" onclick="changeURL('WineType', 'White')"> White (22840)
====================================
首先我调用changeURL(),然后调用isChecked()函数。
但是当这两个函数都被执行时,复选框仍然未被选中。
====================================
function changeURL(fieldname, facetname) {
var ref= window.location.href ;
if(fieldname == "WineType") {
var matchPrice = location.href.match(/&fq=%7B%21tag%3Ddt1%7DWineType%3A/);
if(matchPrice == '&fq=%7B%21tag%3Ddt1%7DWineType%3A' )
{
var ndStart = ref.indexOf("WineType%3A%28");
var ndEnd = ref.indexOf("%29",ndStart );
ref = ref.substring(0,ndStart+12) + ref.substring(ndStart+12, ndEnd) +" OR " +facetname + ref.substring(ndEnd);
}
else {
ref = ref + "?&fq=%7B%21tag%3Ddt1%7DWineType%3A%28"+facetname+"%29";
}
}
window.location.href = ref;
isChecked(facetname);
};
function isChecked(element)
{
var field = document.getElementById(element);
if (element) {
if (field.checked) {
document.getElementById(element).checked= false;
} else {
document.getElementById(element).checked= true;
}
}
};
【问题讨论】:
-
请使用Firefox Firebug调试
-
(与答案无关)但是为什么需要
if (field.checked == true)...为什么不if (field.checked)看看你在做什么。即使它被选中或未选中,你也会让他们检查......改变你的逻辑if (field.checked == true) { document.getElementById(element).checked= true; } else { document.getElementById(element).checked= true; } -
您好,我使用 Firefox 调试了代码。复选框被选中,但是当页面刷新时它被取消选中
-
很明显,在刷新复选框将被取消选中..您可以传递一个查询字符串,然后如果您在查询字符串中有这样的复选框,请选中该复选框。好的。并尝试优化您的代码
-
@asifsid88;是的,我理解逻辑是错误的。但是 IF 和 else 都会导致代码选中复选框。但是页面上尚未选中的复选框会重新加载。
标签: javascript checkbox