window.onload=function()
{
var oTab=document.getElementById('tab1');
var oldColor='';
var oBtn=document.getElementById('btn1');
var oName=document.getElementById('name');
var oAge=document.getElementById('age');
var id=oTab.tBodies[0].rows.length+1;
var oBtn2=document.getElementById('btn2');
var oColor='';
oBtn2.onclick=function()
{
for(var i=0;i<oTab.tBodies[0].rows.length;i++)
{
oColor=oTab.tBodies[0].rows[i].style.backgroundColor;
if(oTab.tBodies[0].rows[i].cells[1].innerHTML==oName.value)
{
oTab.tBodies[0].rows[i].style.background='yellow';
}
else
{
oTab.tBodies[0].rows[i].style.background=oColor;
}
};
};
};
我自己感觉好像逻辑不对,但是不知道为什么不对。我本意是想查询到一个后此行变色,再查询另一个时又变回原来的颜色,但是试了不行(之前定义了隔行变色)
oBtn2的click事件代码内所用到的对象变量均应设为全局变量,因为这个事件代码并不是在window.onload中立即执行的,而是在oBtn2点击后才执行的,所以它里面用到的变量必须是全局变量才行,否则无效。
是的,把oColor去掉换成‘’就对了,但是颜色就都是白的了,我想要的是原来隔行变色还是原来的颜色的
追答oColor=oTab.tBodies[0].rows[i].style.backgroundColor;
只能获取行间的样式
你可以直接将样式写在行间,虽然不是很规范,
例如
我之前是用程序写的颜色样式:隔行变色的,没有单独定义样式
你那个代码是写在行间样式了,
你把完整代码贴一下,我帮你测试一下
我做了一个类似的,循环tr,把tr的颜色存入一个数组,用的时候再取,
var oColor=[];
for(var i=0;i<oTab.tBodies[0].rows.length;i++){
var a=oTab.tBodies[0].rows[i].style.backgroundColor;
oColor.push(a);
}
把下面点击事件
oColor=oTab.tBodies[0].rows[i].style.backgroundColor;这个删掉
oTab.tBodies[0].rows[i].style.background=oColor;中的oColor改成oColor[i];