在以下代码中
<script>
$(document).ready(function() {
if(load_flag == 0)
{
var html = '';
html += "<div id ='err_msg' style='display:none;'><b>Preview errors</b> <br></div>";
html += "<div id ='cont' style='display:none;'><input type='button' value='Continue' onclick='javascript:save();' /></div>";
//some more processing
if(err_flag != 1)
{
$("#err_msg").css({"display" : "block"});
$("#cont").css({"display" : "block"});
}
$("#tabledata").append(html);
});
</script>
<div id="tabledata"></div>
err_msg显示但是id = cont样式仍然是style = none代码有什么问题
答案 0 :(得分:1)
而不是:
$("#err_msg").css({"display" : "block"});
$("#cont").css({"display" : "block"});
试试这个:
$("#err_msg").show();
$("#cont").show();
此外,在您正在构建的HTML字符串中,您有一个这样的onclick处理程序:
onclick='javascript:save();'
不管这里是否最好分配处理程序,你应该这样做:
onclick='save();'
onclick处理程序被理解为JavaScript。
更新:仔细查看您的代码,看起来当您运行“show”逻辑(或样式分配)时,DOM中尚不存在这些元素 - - 它们只是你构建的字符串的一部分。您对尚未存在的元素运行“show”逻辑(因此没有任何反应),然后 将它们附加到#tabledata
(不带已应用其可见性的变化)。这看起来不合时宜,除非我遗漏了什么。
由于无论可见性如何都会发生附加,因此更改序列没有任何害处:
$("#tabledata").append(html);
if( err_flag !== 1 ) {
$("#err_msg").show();
$("#cont").show();
}
答案 1 :(得分:1)
问题是,您没有在文档中插入ID =“err_msg”和ID =“cont”的元素。 首先运行$(“#tabledata”)。append(html);然后进行CSS更改。
$("#tabledata").append(html);
if(err_flag != 1)
{
$("#err_msg").css({"display" : "block"});
$("#cont").css({"display" : "block"});
}
答案 2 :(得分:0)
$("#tabledata").append(html);
之前不应该排在// some more processing
之前。
我通常使用css属性作为$('selector')。css('display','block') - 不需要在那里创建一个对象。另一个建议是使用.hide / .show函数来控制可见性(适用于所有浏览器的所有元素)。