0

嗨,我试图在页面加载时隐藏 div,并在选中/取消选中复选框时显示/隐藏它。这是我的代码:

<asp:CheckBox ID="cb1" runat="server" Text="CB" />

<div runat="server" id="div1" style="display:none">
</div>

这是javascript:

window.onload = function () {
    $('#cb1').change(function () {
        display('div1');
    })
}

function display(id) {
    var traget = document.getElementById(id);
    if (traget.style.display == "none") {
        traget.style.display = "block";
    } else {
        traget.style.display = "none";
    }
}

我得到的错误是这样的:

Uncaught TypeError: Cannot read property 'style' of null

这是我的代码的最后一个版本。我已经尝试过类似的东西:

document.getElementById('div1').style.display="block";
$('#div1').hide();

...以及许多其他选择。

结果是一样的。请帮忙

4

3 回答 3

4

你正在使用runat="server"所以试试这个

<%= div1.ClientID %> 

获取 div 的 ID,然后你可以像这样调用你的函数

display('<%= div1.ClientID %>');

clientidmode="static"在标记中使用

<div runat="server" id="div1" style="display:none" clientidmode="static">
</div>
于 2013-08-26T10:14:07.233 回答
1
function display(id) {
    if ($('#'+id).css('display') === 'none') {
        $('#'+id).show();
    } else {
        $('#'+id).hide();
    }
}
于 2013-08-26T10:18:14.087 回答
1

尝试这个

window.onload = function () {
    $('#<%= cb1.ClientID %>').change(function () {
        display('<%= div1.ClientID %>');
    })
}

function display(id) {
   $('#'+id).toggle();
}
于 2013-08-26T10:37:17.150 回答