2013-03-25 76 views
0

我有一些ASP.NET表格行最初是不可见的。在点击时,我正在运行一个Javascript函数,它正在改变显示它的表格的样式或隐藏它。如何获取代码背后的代码元素的样式由JavaScript更改

表现出来:

document.getElementById(id).style.display = ""; 

来隐藏它:

document.getElementById(id).style.display = "none"; 

和工作原理。

问题是,我需要做一些过滤与该行的内容当且仅当该行是可见的。

在样式背后的代码保持状态为设计,并不需要当前状态。

如果元素可见或不可见,将获得信息的最佳方法是什么?

+0

如果您正在引用行,如'table'中的'tr'所示。你可以请发布相关的HTML标记。 document.getElementById(id)'引用什么DOM元素? – Nope 2013-03-25 14:31:04

+0

您可以向我们展示您需要检查样式的相关周边代码吗?知道你目前得到的东西通常有帮助。 – 2013-03-25 14:36:59

+0

这个问题可以重复:[**如何检查,如果元素是真正可见的与JavaScript **](http://stackoverflow.com/questions/704758/how - 检查,如果一个元素是真正可见的与JavaScript)?不知道这篇文章是否有帮助,但它肯定是有趣的,似乎解决了这个问题:[** javascript-tool-detect-if-a-dom-element-is-truly-visible **](http:// useallfive。 com/javascript-tool-detect-if-a-dom-element-is-really-visible /) – Nope 2013-03-25 15:16:59

回答

0

当您运行该JavaScript时,您需要更改服务器控件中的某个值的值(这将使用新值回发到服务器)。如果你还没有到位,你可以使用像HiddenField控件一样简单的东西。在JavaScript函数

<asp:HiddenField ID="isRowShowing" Value="True" runat="server" /> 

然后做到这一点:

所以,你会添加到您的标记

//To show 
document.getElementById(id).style.display = ""; 
document.getElementById('<%= isRowShowing.ClientID %>').value = "True"; 

//To Hide 
document.getElementById(id).style.display = "none"; 
document.getElementById('<%= isRowShowing.ClientID %>').value = "False"; 

然后你就可以在你的代码检查它的背后:

if(isRowShowing.Value == "True") 
{ 
    // Do stuff 
} 
else 
{ 
    // Do other stuff. Or don't do stuff. Whatevs. 
} 
0

展示它:

document.getElementById(id).style.display="inline"; 

来隐藏它:

document.getElementById(id).style.display="none"; 

要检查它:

if(document.getElementById(id).style.display=="inline") { 
    //Do your stuff 
    } 

还是我失去了一些东西?

+1

基于最后两个句子(“*在代码后面的样式保持状态为设计,并不需要当前状态,如果元素可见或不可见,什么是获取信息的最佳方法?“),我认为OP正在尝试检查(在服务器端)客户端的可见性是否已更改。 – jadarnel27 2013-03-25 15:22:35

+0

啊,也许我错过了一些东西然后: - \ – ElPedro 2013-03-25 15:36:33

+0

在你的防守中,我觉得这个问题有点不清楚。 – jadarnel27 2013-03-25 15:39:47