2016-04-06 108 views
0

我想隐藏表格的一行。下面是表行:Javascript不会隐藏tr元素

<input id="CheckboxDamage" onchange="ChangeDmgExpVisibility()" type="checkbox" runat="server" /> 
<table style="width: 100%;"> 
***some other rows*** 
<tr id="dmg"> 
    <td> 
    <asp:TextBox ID="TextBoxDamageExplanation" TextMode="MultiLine" runat="server"></asp:TextBox> 
    </td> 
    <td> 
    <asp:FileUpload ID="FileUploadDamage" runat="server" /> 
    </td> 
</tr> 
</table> 

这里是我的JS:

function ChangeDmgExpVisibility() { 
     var txtbox = document.getElementById('dmg'); 
     var checkbox = document.getElementById('CheckboxDamage'); 

     if (checkbox.checked) 
      txtbox.style.visibility = "visible"; 
     else 
      txtbox.style.visibility = "hidden"; 
    } 

我也试过:

function ChangeDmgExpVisibility() { 
     var txtbox = document.getElementById('dmg'); 
     var checkbox = document.getElementById('CheckboxDamage'); 

     if (checkbox.checked) 
      txtbox.style.display = "block"; 
     else 
      txtbox.style.display = "none"; 
    } 

他们没有给任何结果。有什么建议?

+1

它正在工作https://jsfiddle.net/tnw5o9d1/。你的控制台有任何错误吗? – nanndoj

+0

我不确定这是什么问题,因为当我在方法内写入警报时弹出,所以onchange不起作用 –

+0

如果您有多个'div''具有与'dmg'相同的'id',则它不起作用。 – Derek

回答

0

您可能在定义它之前调用了该函数。它工作正常,在此的jsfiddle:

https://jsfiddle.net/cv29c702/

的代码看起来是这样的:

<script> 
function ChangeDmgExpVisibility() { 
     var txtbox = document.getElementById('dmg'); 
     var checkbox = document.getElementById('CheckboxDamage'); 

     if (checkbox.checked) 
      txtbox.style.visibility = "visible"; 
     else 
      txtbox.style.visibility = "hidden"; 
    } 
</script> 

<input id="CheckboxDamage" onchange="ChangeDmgExpVisibility()" type="checkbox" runat="server" /> 
<table style="width: 100%;"> 
***some other rows*** 
<tr id="dmg"> 
    <td> 
    <asp:TextBox ID="TextBoxDamageExplanation" TextMode="MultiLine" runat="server">hello there</asp:TextBox> 
    </td> 
    <td> 
    <asp:FileUpload ID="FileUploadDamage" runat="server" /> 
    </td> 
</tr> 
</table> 

我只是做了一定要定义函数调用它的HTML之前

0

谢谢你所有支持,但没有任何工作,它真的很奇怪,因为它在jsfiddle.net中运行良好,而不是在我的代码中工作。我用的是不同的,简单的方式解决了这个问题:

var see = true; 
    function ChangeDmgExpVisibility() { 
     var txtbox = document.getElementById('dmg'); 

     if (see) { 
      txtbox.style.visibility = "hidden"; 
      see = false; 
     } 

     else { 
      txtbox.style.visibility = "visible"; 
      see = true; 
     } 

    } 

就像我说的,我还是不知道为什么,我的第一个方法没有工作,但这个工作没有问题。