none
js报参数无效(FF正常) RRS feed

  • 问题

  • js报参数无效(FF正常)IE报错

    参考网址:http://auto.chinaauto.net/cx/fc136.html 

     

    当每行所有列值都为“-” 隐藏所有行

    //隐藏所有"-"值
    
    function hideNull(checked)
    
    {
    
    	
    
    	for(var i=0;i<12;i++)
    
    		{
    
    			var tabs = 	compare_$("infotable_"+i);
    
    			var lefttabs = 	compare_$("lefttable_"+i);
    
    			
    
    			var rows = tabs.rows;
    
    			var leftrows = lefttabs.rows;
    
    			for(var ii = 0;ii<rows.length;ii++)
    
    			{
    
    
    
    				
    
    				var cellArr = new Array();
    
    				var cells = rows[ii].cells;
    
    				for(var j = 1;j<cells.length;j++)
    
    				{
    
    					if(cells[j].getElementsByTagName("div")[0].style.display!="none"&&cells[j].getElementsByTagName("div")[0].innerHTML)
    
    					{
    
    						cellArr.push(cells[j].getElementsByTagName("div")[0].innerHTML);	
    
    					}
    
    					
    
    				}
    
    			
    
    				//判断是否相同
    
    				if(cellArr.length >1)
    
    				{
    
    						var isSame = true;
    
    						var jj = 0;
    
    						for(var jj=0;jj<cellArr.length;jj++)
    
    						{
    
    							if("-" !=cellArr[jj])
    
    							{
    
    								isSame = false;
    
    								break;
    
    							}
    
    							
    
    						}
    
    						
    
    						if(isSame)
    
    						{
    
    <strong>	<span style="color:red">						rows[ii].style.display = checked ? "none" : "";//问题出在此
    
    							leftrows[ii].style.display = checked ? "none" : "";</span></strong>
    
    						}
    
    						else
    
    						{
    
    							rows[ii].style.display = "";
    
    							leftrows[ii].style.display = "";						
    
    						}
    
    				}
    
    				else if(cellArr.length ==1)
    
    				{
    
    						rows[ii].style.display = "";
    
    						leftrows[ii].style.display = "";					
    
    				}
    
    				else
    
    				{
    
    					//rows[ii].style.display = checked?"none":"";
    
    					rows[ii].style.display = "";
    
    					leftrows[ii].style.display = "";	
    
    					
    
    				}
    
    				
    
    			}
    
    			
    
    			//如果每行都display == none hide table
    
    			var isAllHidden = true;
    
    			for(var ii =0;ii<rows.length;ii++ )
    
    			{
    
    					if(rows[ii].style.display != "none")
    
    					{
    
    							isAllHidden =false;
    
    							break;
    
    					}
    
    			}
    
    			
    
    			if(isAllHidden)
    
    			{
    
    				tabs.parentNode.parentNode.parentNode.style.display="none";
    
    				lefttabs.parentNode.parentNode.parentNode.style.display="none";
    
    			}
    
    			else
    
    			{
    
    					tabs.parentNode.parentNode.parentNode.style.display="";
    
    					lefttabs.parentNode.parentNode.parentNode.style.display="";			
    
    			}
    
    			
    
    		}	
    
    	
    
    }
    
    

     

    rows[ii].style.display = checked ? "none" : "";//问题出在此 

    Check为传入参数; rows[ii].style.display = 赋值就会报错?  

     

     

    2010年10月19日 7:31

答案

  • 难道是在执行js函数前html标签还没有初始化完毕吗? 所以对还没有初始化完毕的标签对象设置属性 会返回错误码?
    • 已标记为答案 Anton Jin 2010年10月21日 7:27
    2010年10月21日 1:24
  • 你好!

    可能是没有加载完,你试试在 onload 中执行你的方法,如:

    window.onload = function()
    {
      hideNull(true);
    }
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 Anton Jin 2010年10月21日 7:27
    2010年10月21日 5:14
    版主

全部回复

  • 你好!

    以下 IE、FF 都可以

    rows[ii].style.visibility = checked ? "hidden" : "visible";


    知识改变命运,奋斗成就人生!
    2010年10月20日 5:49
    版主
  • 你好!

    以下 IE、FF 都可以

    rows[ii].style.visibility = checked ? "hidden" : "visible";


    知识改变命运,奋斗成就人生!

    这样设置确实解决了参数无效的问题 非常感谢

    可是有个新的问题,visibility 设置此属性后为隐藏的对象保留其占据的物理空间。

    页面上会有空白怎么办呢?

    <img src="http://auto.chinaauto.net/images/error1.JPG" alt="" >

    图片地址:http://auto.chinaauto.net/images/error1.JPG

     

     

    加了一个按钮,触发这个函数(hideNull(true))IE,FF就都没问题了

    可是为什么在页面底部加入JS调用代码 如下:

    <script language="javascript" type="text/javascript">

    hideNull(true);

    </script>

    IE返回参数无效呢?

     

    • 已编辑 Anton Jin 2010年10月21日 1:21 分析
    2010年10月21日 0:47
  • 难道是在执行js函数前html标签还没有初始化完毕吗? 所以对还没有初始化完毕的标签对象设置属性 会返回错误码?
    • 已标记为答案 Anton Jin 2010年10月21日 7:27
    2010年10月21日 1:24
  • 你好!

    可能是没有加载完,你试试在 onload 中执行你的方法,如:

    window.onload = function()
    {
      hideNull(true);
    }
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 Anton Jin 2010年10月21日 7:27
    2010年10月21日 5:14
    版主
  • 多谢,真的是这个问题

    非常感谢!!

    2010年10月21日 7:27