页面上的显示隐藏是这么写的:
$("#table_tj").show();
$("#table_tj").hide();
判断方式是这样的:
判断是否显示:$("#table_tj").is(":visible");
判断是否隐藏:$("#table_tj").is(":hidden");
在IE里判断是正确的,可是用谷歌浏览器判断就不对,同样设置了显示属性:
$("#table_tj").show();当我调试的时候$("#table_tj").is(":visible")的值却是false
请问我怎么做才能获取正确呢
alert($("#table_tj").css("display")==="block"));
alert($("#table_tj").css("display")==="none"));
为什么我用谷歌调试这两个值都是false呢
$("#table_tj").show();
alert($("#table_tj").css("display")==="block");
我这么写它弹出的是false,不是应该是true吗?
@淘@淘: $("#table_tj").css("display","none");//隐藏
$("#table_tj").css("display","block");//显示
@淘@淘: 直接把关键代码贴出来吧,看看什么情况。
@BERWOLF: 我页面上用的是span:
<span id="table_tj" style="display: none;" width="100%" border="1px"></span>
span里的内容是动态向里边写入的Table,如下的js:
function scinput(tj) { if (tj == null || tj == "") { $("#table_tj").hide(); //$("#table_tj").is(":hidden") = true; alert($("#table_tj").css("display") === "none");//true } else { $("#table_tj").show(); //$("#table_tj").is(":visible") = true; alert($("#table_tj").css("display")==="block");//ture //生成input begin ch = new Array; ch = tj.split(","); var size = ch.length; var table_tj = document.getElementById("table_tj"); var txt = ""; var td = ""; for (var i = 0; i < size; i++) { if (ch[i] != "" && ch[i] != null) { td = td + "<td width='8%' align='right'>" + ch[i].split("[")[0] + ":" + "</td><td width='17%' align='left'><lable id='" + ch[i].match(/[^\[]+(?=\])/g)[0] + "' name='tdname' style='display: block;' >" + ch[i].match(/[^\[]+(?=\])/g)[0] + "</lable>" + "</td>"; if ((i + 1) % 4 == 0) { txt = txt + "<tr>" + td + "</tr>"; td = ""; } table_tj.innerHTML = "<TABLE><TBODY>" + txt + "</TBODY></TABLE>"; } } txt = txt + "<tr>" + td + "</tr>"; table_tj.innerHTML = "<fieldset style='margin:0 10 1em 10;'><legend>报表信息</legend><TABLE id='table_tj2' width='90%' align='center' border='0' cellspacing='0' cellpadding='0'><TBODY>" + txt + "</TBODY></TABLE></fieldset>"; //生成input end } }
按理说弹窗都应该是true,可是现在alert($("#table_tj").css("display")==="block");弹的是false,
我很纳闷
@淘@淘:
alert($("#table_tj").css("display"));
试一下
@BERWOLF: 一个弹的是none;一个弹的是inline
@淘@淘: 笑了。
@淘@淘: 你的样式在作怪;权宜之计:
alert($("#table_tj").css("display")==="inline");
@BERWOLF:呃 (⊙o⊙)…
$("#table_tj").show() hide() 只对 $("#table_tj").is(":hidden") 有效吧
还是不行,我这块谷歌跟IE就是不一样的
$("#table_tj").is(":hidden")==true div已隐藏
$("#table_tj").is(":visible")==true div已被其他容器覆盖 肉眼看不到
@淘@淘: 用DIV试试
@芒果の冰: 像你说的我把我的代码都换成div了,IE里勉强还算可以,可是谷歌里样式还是不行,不过二楼给我的弹窗倒是弹的对
if (tj == null || tj == "") { $("#table_tj").hide(); //$("#table_tj").is(":hidden") = true; alert($("#table_tj").css("display") === "none"); //true } else { $("#table_tj").show(); //$("#table_tj").is(":visible") = true; alert($("#table_tj").css("display") === "block"); //ture }
都是弹的true;就是样式还是不对呢
@淘@淘: 放弃判断隐藏还是显示
定义一个变量在if上面 var num=0;
如果
if(tj == null || tj == ""){}else{num= 要减的高度;}
然后在下面直接减
@芒果の冰: 呃,那好吧,我现在只把“tj”那个换成div了,然后用这个判断的:
$("#table_tj").css("display")==="block"
勉强可以实现
@淘@淘: 不知道其他浏览器会不会报错,哎。。。
二楼正解
嗯嗯,目测二楼可行(没有试)