我有2列单选按钮。选择左侧的一个,相应的右侧变为未选中,反之亦然。然后我添加了一些Javascript,以便当前选择的radiobuttons背景为蓝色,另一个为白色。这很好。然后我添加了两个按钮,一个用于检查左侧的所有单选按钮,另一个用于检查右侧的所有单选按钮。这是我的问题出现的地方。每当我使用按钮时,都会正确检查无线电按钮,但背景颜色永远不会正确显示。
示例1
当我检查第1列的无线电按钮并且其背景为蓝色时启动,然后按下按钮激活第2列,第2列的无线电按钮全部被检查,其背景闪烁蓝色片刻,然后第1列的背景保持蓝色。
示例2
启动时,我检查了第1列的无线电按钮,但没有影响其背景颜色,然后按下按钮激活第2列,第2列的无线电按钮全部被检查,其背景闪烁蓝色片刻,然后返回白色。如果我现在单击第1列的按钮(无线电变为选中状态,闪烁蓝色,返回白色),效果相同。
可能有什么问题?我想也许它可能是一个回发但是无线电检查的价值肯定会刷新,所以我不认为它。任何帮助将不胜感激。
CODE
这是用于选择列的按钮。传递函数的控件只是一个(所以单击的按钮)。由于无线电按钮是动态创建的,因此有点复杂。要点是弄清楚按下哪个按钮,然后循环通过相关的radiobuttons并检查它们,并重新绘制其父母的父母(td元素)的背景......如果这是有道理的。
function ColumnBtnSelect(control) {
var btnNum = (control.id).substring((control.id).length - 1, (control.id).length);
var objPart = "ctl00_ContentPlaceHolder1_GridView1_ctl";
var objName;
for (x = 3; x <= 15; x++) {
if (btnNum == 1) {
var num1 = "0" + x;
objName = objPart + num1.substr(num1.length - 2) + "_" + ((x - 3) * 2);
document.getElementById(objName).checked = true;
$(document.getElementById(objName)).parent().parent().css("background-
color", "#A9D0F5");
}
else {
var num1 = "0" + x;
objName = objPart + num1.substr(num1.length - 2) + "_" + (((x - 3) * 2) + 1);
document.getElementById(objName).checked = true;
$(document.getElementById(objName)).parent().parent().css("background-
color", "#A9D0F5");
}
}
更新
阅读完建议后,我回顾了我的代码。我有另一个javascript函数,将相应的radiobutton设置为白色,但是因为我尝试了示例2,我已经将它注释掉了,这意味着我的代码中没有任何地方,我现在将任何东西设置为白色,但即使行似乎仍然切换到了蓝色,然后转回白色。很奇怪。我还在Firebug中检查了我的CSS。所有的td元素(应该是蓝色但实际上是白色)似乎没有列出背景颜色的任何设置,也不是白色而不是蓝色。这看起来好像没有被覆盖但是可能会返回默认值?无论如何,我很难过!
答案 0 :(得分:1)
您发布的代码会将所选单选按钮的背景更改为蓝色。 但它不会将未选中的单选按钮的背景颜色更改为白色。 (意思是其他一些代码正在这样做)
您发布的代码确实很好。它会将所选单选按钮的背景颜色更改为蓝色。所以问题可能是在单选按钮取消选择时将背景颜色变为白色的代码。
您究竟如何将背景颜色更改为白色? 您应该查看该代码或在此处发布该代码以获得更多帮助:D
答案 1 :(得分:0)
我怀疑按钮导致回发问题。奇怪的是复选框没有重置,但一旦我确定没有回复,就像一个魅力!