复选框选择似乎彼此不一致
Checkbox Selections seem to disagree with each other
好的,我得到了一个使用JavaScript的项目(仍在学习)。基本上,我需要有一个用户可以选择的复选框列表(即属性),当他们选择这些不同的属性时,我需要有一个不同的divs显示,其中包含与所选属性对应的信息。例如,如果他们选中"经济"复选框,则仅显示与该复选框关联的div。我已经能够开始工作了。
现在我需要让不在一起的属性变灰并在选中的属性上被禁用。 例如,"经济舱"复选框与"高级"复选框不符。因此,如果用户选中"经济"复选框,则应禁用"高级"复选框并灰显。在某种程度上,我已经做到了。
但是,某些属性由不同的div 共享。这就是我遇到麻烦的地方。这是我的 HTML:我在"头"中确实有一个指向我的 js 文件的链接。这只是页面的一部分:
<div id="column2" style="width:250px; padding:5px 10px 5px 10px; float:left">
<form name="checkForm2" id="checkForm2">
<input type="checkbox" id="att_9" name="att_9" onChange="showBERNINI();"><span id="grey_att9">Economy</span><br />
<input type="checkbox" id="att_10" name="att_10" onChange="showPICASSO();"><span id="grey_att10">Visible Banner: 33.5" x 78.7"</span><br />
<input type="checkbox" id="att_11" name="att_11" onChange="showMATISSE();"><span id="grey_att11">Tension Knob System</span><br />
<input type="checkbox" id="att_12" name="att_12" onChange="showBERNPIC();"><span id="grey_att12">Tape-in Bottom Rail</span><br />
<input type="checkbox" id="att_13" name="att_13" onChange="showPICASSO();"><span id="grey_att13">3 piece bungee pole</span><br />
<input type="checkbox" id="att_14" name="att_14" onChange="showMATISSE();"><span id="grey_att14">Great for interchangeable graphics</span><br />
<input type="checkbox" id="att_15" name="att_15" onChange="showBERNINI();"><span id="grey_att15">90 day warranty</span><br />
<input type="checkbox" id="att_16" name="att_16" onChange="showMATISSE();"><span id="grey_att16">Chrome end caps</span><br />
</form>
</div>
JS文件:
function showBERNINI() {
if (document.checkForm1.att_2.checked || document.checkForm1.att_5.checked || document.checkForm1.att_6.checked || document.checkForm2.att_9.checked || document.checkForm2.att_15.checked || document.checkForm3.att_23.checked)
{
document.getElementById("Picasso").style.display="none";
document.getElementById("Matisse").style.display="none";
document.getElementById("att_3").disabled=true;
document.getElementById("att_10").disabled=true;
document.getElementById("att_11").disabled=true;
document.getElementById("att_13").disabled=true;
document.getElementById("att_14").disabled=true;
document.getElementById("att_16").disabled=true;
document.getElementById("att_17").disabled=true;
document.getElementById("att_18").disabled=true;
document.getElementById("att_19").disabled=true;
document.getElementById("att_20").disabled=true;
document.getElementById("att_21").disabled=true;
document.getElementById("att_22").disabled=true;
document.getElementById("att_24").disabled=true;
document.getElementById("grey_att3").style.color="#d1d1d1";
document.getElementById("grey_att10").style.color="#d1d1d1";
document.getElementById("grey_att11").style.color="#d1d1d1";
document.getElementById("grey_att13").style.color="#d1d1d1";
document.getElementById("grey_att14").style.color="#d1d1d1";
document.getElementById("grey_att16").style.color="#d1d1d1";
document.getElementById("grey_att17").style.color="#d1d1d1";
document.getElementById("grey_att18").style.color="#d1d1d1";
document.getElementById("grey_att19").style.color="#d1d1d1";
document.getElementById("grey_att20").style.color="#d1d1d1";
document.getElementById("grey_att21").style.color="#d1d1d1";
document.getElementById("grey_att22").style.color="#d1d1d1";
document.getElementById("grey_att24").style.color="#d1d1d1";
}
else
{
document.getElementById("Picasso").style.display="";
document.getElementById("Matisse").style.display="";
document.getElementById("att_3").disabled=false;
document.getElementById("att_10").disabled=false;
document.getElementById("att_11").disabled=false;
document.getElementById("att_13").disabled=false;
document.getElementById("att_14").disabled=false;
document.getElementById("att_16").disabled=false;
document.getElementById("att_17").disabled=false;
document.getElementById("att_18").disabled=false;
document.getElementById("att_19").disabled=false;
document.getElementById("att_20").disabled=false;
document.getElementById("att_21").disabled=false;
document.getElementById("att_22").disabled=false;
document.getElementById("att_24").disabled=false;
document.getElementById("grey_att3").style.color="";
document.getElementById("grey_att10").style.color="";
document.getElementById("grey_att11").style.color="";
document.getElementById("grey_att13").style.color="";
document.getElementById("grey_att14").style.color="";
document.getElementById("grey_att16").style.color="";
document.getElementById("grey_att17").style.color="";
document.getElementById("grey_att18").style.color="";
document.getElementById("grey_att19").style.color="";
document.getElementById("grey_att20").style.color="";
document.getElementById("grey_att21").style.color="";
document.getElementById("grey_att22").style.color="";
document.getElementById("grey_att24").style.color="";
}
if (document.checkForm2.att_12.checked)
{
document.getElementById("Matisse").style.display="none";
}}
function showPICASSO() {
if (document.checkForm1.att_3.checked || document.checkForm2.att_10.checked || document.checkForm2.att_13.checked)
{
document.getElementById("Bernini").style.display="none";
document.getElementById("Matisse").style.display="none";
document.getElementById("att_2").disabled=true;
document.getElementById("att_5").disabled=true;
document.getElementById("att_6").disabled=true;
document.getElementById("att_9").disabled=true;
document.getElementById("att_11").disabled=true;
document.getElementById("att_14").disabled=true;
document.getElementById("att_15").disabled=true;
document.getElementById("att_16").disabled=true;
document.getElementById("att_17").disabled=true;
document.getElementById("att_18").disabled=true;
document.getElementById("att_19").disabled=true;
document.getElementById("att_20").disabled=true;
document.getElementById("att_21").disabled=true;
document.getElementById("att_23").disabled=true;
document.getElementById("grey_att2").style.color="#d1d1d1";
document.getElementById("grey_att5").style.color="#d1d1d1";
document.getElementById("grey_att6").style.color="#d1d1d1";
document.getElementById("grey_att9").style.color="#d1d1d1";
document.getElementById("grey_att11").style.color="#d1d1d1";
document.getElementById("grey_att14").style.color="#d1d1d1";
document.getElementById("grey_att15").style.color="#d1d1d1";
document.getElementById("grey_att16").style.color="#d1d1d1";
document.getElementById("grey_att17").style.color="#d1d1d1";
document.getElementById("grey_att18").style.color="#d1d1d1";
document.getElementById("grey_att19").style.color="#d1d1d1";
document.getElementById("grey_att20").style.color="#d1d1d1";
document.getElementById("grey_att21").style.color="#d1d1d1";
document.getElementById("grey_att23").style.color="#d1d1d1";
}
else
{
document.getElementById("Bernini").style.display="";
document.getElementById("Matisse").style.display="";
document.getElementById("att_2").disabled=false;
document.getElementById("att_5").disabled=false;
document.getElementById("att_6").disabled=false;
document.getElementById("att_9").disabled=false;
document.getElementById("att_11").disabled=false;
document.getElementById("att_14").disabled=false;
document.getElementById("att_15").disabled=false;
document.getElementById("att_16").disabled=false;
document.getElementById("att_17").disabled=false;
document.getElementById("att_18").disabled=false;
document.getElementById("att_19").disabled=false;
document.getElementById("att_20").disabled=false;
document.getElementById("att_21").disabled=false;
document.getElementById("att_23").disabled=false;
document.getElementById("grey_att2").style.color="";
document.getElementById("grey_att5").style.color="";
document.getElementById("grey_att6").style.color="";
document.getElementById("grey_att9").style.color="";
document.getElementById("grey_att11").style.color="";
document.getElementById("grey_att14").style.color="";
document.getElementById("grey_att15").style.color="";
document.getElementById("grey_att16").style.color="";
document.getElementById("grey_att17").style.color="";
document.getElementById("grey_att18").style.color="";
document.getElementById("grey_att19").style.color="";
document.getElementById("grey_att20").style.color="";
document.getElementById("grey_att21").style.color="";
document.getElementById("grey_att23").style.color="";
}
if (document.checkForm2.att_12.checked)
{
document.getElementById("Matisse").style.display="none";
document.getElementById("att_11").disabled=true;
document.getElementById("att_14").disabled=true;
document.getElementById("att_16").disabled=true;
document.getElementById("att_17").disabled=true;
document.getElementById("att_18").disabled=true;
document.getElementById("att_19").disabled=true;
document.getElementById("att_20").disabled=true;
document.getElementById("att_21").disabled=true;
document.getElementById("grey_att11").style.color="#d1d1d1";
document.getElementById("grey_att14").style.color="#d1d1d1";
document.getElementById("grey_att16").style.color="#d1d1d1";
document.getElementById("grey_att17").style.color="#d1d1d1";
document.getElementById("grey_att18").style.color="#d1d1d1";
document.getElementById("grey_att19").style.color="#d1d1d1";
document.getElementById("grey_att20").style.color="#d1d1d1";
document.getElementById("grey_att21").style.color="#d1d1d1";
}
if (document.checkForm3.att_22.checked || document.checkForm3.att_24.checked)
{
document.getElementById("Bernini").style.display="none";
}}
function showBERNPIC() {
if (document.checkForm2.att_12.checked)
{
document.getElementById("Matisse").style.display="none";
document.getElementById("att_11").disabled=true;
document.getElementById("att_14").disabled=true;
document.getElementById("att_16").disabled=true;
document.getElementById("att_17").disabled=true;
document.getElementById("att_18").disabled=true;
document.getElementById("att_19").disabled=true;
document.getElementById("att_20").disabled=true;
document.getElementById("att_21").disabled=true;
document.getElementById("grey_att11").style.color="#d1d1d1";
document.getElementById("grey_att14").style.color="#d1d1d1";
document.getElementById("grey_att16").style.color="#d1d1d1";
document.getElementById("grey_att17").style.color="#d1d1d1";
document.getElementById("grey_att18").style.color="#d1d1d1";
document.getElementById("grey_att19").style.color="#d1d1d1";
document.getElementById("grey_att20").style.color="#d1d1d1";
document.getElementById("grey_att21").style.color="#d1d1d1";
}
else
{
document.getElementById("Matisse").style.display="";
document.getElementById("att_11").disabled=false;
document.getElementById("att_14").disabled=false;
document.getElementById("att_16").disabled=false;
document.getElementById("att_17").disabled=false;
document.getElementById("att_18").disabled=false;
document.getElementById("att_19").disabled=false;
document.getElementById("att_20").disabled=false;
document.getElementById("att_21").disabled=false;
document.getElementById("grey_att11").style.color="";
document.getElementById("grey_att14").style.color="";
document.getElementById("grey_att16").style.color="";
document.getElementById("grey_att17").style.color="";
document.getElementById("grey_att18").style.color="";
document.getElementById("grey_att19").style.color="";
document.getElementById("grey_att20").style.color="";
document.getElementById("grey_att21").style.color="";
}
if (document.checkForm1.att_2.checked || document.checkForm1.att_5.checked || document.checkForm1.att_6.checked || document.checkForm2.att_9.checked || document.checkForm2.att_15.checked || document.checkForm3.att_23.checked)
{
document.getElementById("Picasso").style.display="none";
document.getElementById("Matisse").style.display="none";
}
if (document.checkForm1.att_3.checked || document.checkForm2.att_10.checked || document.checkForm2.att_13.checked)
{
document.getElementById("Bernini").style.display="none";
document.getElementById("Matisse").style.display="none";
}}
我遇到的问题的最好例子是当我选择"经济"复选框,然后选择"胶带底轨"复选框时,然后如果我碰巧取消选择"胶带底轨"复选框太多复选框再次可用,我无法让它只显示仅选中"经济"复选框的情况下应该显示的内容。就像有些被启用,不应该。
我希望我没有在这里添加太多,但由于这是我的第一个 JavaScript 项目,我想我应该发布更多而不是更少。我也知道必须有一种更巩固的方式来做我正在尝试的事情,但我并不真正习惯使用 jQuery。任何帮助将不胜感激,因为我已经盯着这个已经有一段时间了。
我正在尝试使用getElementByClassName并取得了一些成功,但并不完全成功。我有这个html
<p><input type="button" value="nightmare" onClick="nightmare();"></p>
<div id="form" style="width:810px; font-family:Gotham, 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size:12px;">
<div id="column1" style="width:250px; padding:5px 10px 5px 10px; float:left">
<form name="checkForm1" id="checkForm1">
<span class="all"><input type="checkbox" id="att_1" name="att_1" class="all" onChange="">Single-sided</span><br />
<span class="bernini"><input type="checkbox" id="att_2" name="att_2" onChange="">Visible Banner: 33.5" x 36"-78.7"</span><br />
<span class="picasso"><input type="checkbox" id="att_3" name="att_3" onChange="">Medium Duty Spring System</span><br />
<span class="matisse"><input type="checkbox" id="att_4" name="att_4" onChange="">Clip-in Top Rail</span><br />
<span class="bernini"><input type="checkbox" id="att_5" name="att_5" onChange="">Adjustable Twist Locking Pole</span><br />
<span class="bernini"><input type="checkbox" id="att_6" name="att_6" onChange="">Single graphic use</span><br />
<span class="all"><input type="checkbox" id="att_7" name="att_7" onChange="">Carrying case included</span><br />
<span class="all"><input type="checkbox" id="att_8" name="att_8" onChange="">Silver finish</span><br />
</form>
</div></div>
而这个 js
function nightmare(){var berninis = document.getElementsByClassName('picasso matisse');for(var i = 0; i < berninis.length; i++) {berninis[i].style.color="#d1d1d1";}}
现在,如果我在函数中只有 1 个类,它可以工作,但一旦我同时完成这两个类,它就不再有效。
如果你了解Angular,你可以用它来简化你的工作。要使用它,您可以使用很多信息来帮助您,并且学习起来非常简单。在此框架中,您可以创建函数,只需在代码开头定义它们,例如。在.js文件中,您只需拥有所需的操作,并阻止所有工作和代码。对于处理这种事情,这是一个非常好的建议。
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- 选择不带选择器的元素,仅使用元素ID
- Android和JavaScript解析API之间不一致
- Javascript的行为与PHP包含文件不一致
- 对这种与document.domain和CORS相关的不一致行为的解释是什么
- 不应选择缩略图优先图像
- 点击链接行为不一致
- Passport.js`isAuthenticated()`不一致的行为;当它应该是真的时候是假的
- 与显示不一致
- Ext 4.2.1 模型日期解析在浏览器之间不一致
- 通过 Dropbox API 上传时的文件内容不一致
- select2 使用 AJAX 加载数据不能选择任何选项
- JavaScript - 对象属性不一致
- 复选框选择似乎彼此不一致
- 角度带日期选择器:返回不一致的时间戳,UTC+0与UTC+12小时
- 选择多选元素时的行为不一致
- 谷歌选择器不一致加载预览图像
- HTML5画布在使用ID选择器定义宽度和高度时执行不一致
- 不一致的text() val()选择和填充输入
- 查询选择器选择器不一致