2009-10-17 51 views
1

我有一个表,其中行从记录集动态加载。我也使用过Javascript,这样当选中一个复选框(不在表格中)时,它会在列x = y时隐藏所有行,但我有一个垂直边框(实际上只是背景图像位于右侧)最后一行使用CSS .sortable .dynamicrow:last-child td{在Javascript中刷新元素样式

所以,当我检查框和最后一行被删除,边框不会正常淡入淡出基本上我需要重新运行/刷新CSS。

在所有我问如何刷新javascript中元素的样式/ CSS。

.sortable .dynamicrow:last-child td{ 
    background-image:url(../Images/tablevborderbottom.png); 
    background-position:right; 
    background-repeat:no-repeat; 
} 

是我使用的有最后一排的垂直边界褪色有时最后一行被删除的CSS,所以倒数第二行就成为最后一排,但它一直是固体边界,它不消退。

另一种说法是,在页面加载后,由于JavaScript有时最后一个孩子被删除,所以上面的孩子成为最后一个孩子,我如何将上面的CSS应用到新的最后一个孩子,儿童?

+1

你可以发布一个例子,或至少一些代码? – Kobi 2009-10-17 18:12:25

+0

哪个浏览器和版本发生此问题?你在使用任何JavaScript库吗? – brianpeiris 2009-10-17 18:48:21

+0

我正在使用Firefox(雷区))3.7,是否有问题?我认为这只是它的工作原理。 – 2009-10-17 18:54:04

回答

0

我会做的是添加一个类声明到您现有的风格,并隐藏最后一行应用CSS类到现在的最后一行。

 
    .sortable .dynamicrow:last-child td, .dummy_last_row{ 
    background-image:url(../Images/tablevborderbottom.png); 
    background-position:right; 
    background-repeat:no-repeat; 
} 

然后JavaScript。这是基于一个简单的表,具有5行,1个TD与的onclick =按钮“Lst_row(这)”

 
function Lst_row(row){ 
    row = row.parentNode.parentNode; 
    tbl = document.getElementById("sorttable"); 
    rows = tbl.getElementsByTagName("TR"); 
    if(row == rows[tbl.getElementsByTagName("TR").length-1] || row.className.indexOf("dummy_last_row") != -1){ 
     for (i=0; i<rows.length; i++){ 
      if(i != 0 && row == rows[i] && rows[i-1])){ 
       rows[i-1].className += " dummy_last_row"; 
      } 
     } 
    } 
} 

这当然是很简单的,但基体是存在的。

+0

如果行数是动态的,它会影响吗?那么没有定数? – 2009-10-17 21:12:01

+0

不,它不会影响,它将与排序表中的行数一样多。但是,您需要调整它以适应这种情况,即基于单击表中的某个元素,但是您拥有一个位于表外的复选框。如果您无法弄清楚如何更改,请告诉我们。 – Psytronic 2009-10-18 07:43:50

+0

你能解释每一行代码吗?我有点想法,但我想完全理解它。我了解设置变量。 – 2009-10-19 20:17:15