0

我在页面加载时运行下面的 javascript 函数 shoh() 来隐藏 div。这适用于 html 硬编码的 div,但似乎不适用于通过 php 创建的 div。我是否正确假设 javascript 在 php 创建 div 之前首先运行,这就是为什么它们没有被隐藏?如果是这样,有没有其他方法可以在创建这些 div 后隐藏它们?如果禁用javascript,它们需要默认显示吗?

与 onload 一起运行的代码:

<script type="text/javascript">
function closeAllDivs() {
  shoh('g1');
  shoh('g2');
  shoh('g3');
  shoh('g4');
    }   
</script>
<BODY onLoad="closeAllDivs();">

隐藏div的javascript:

function shoh(id) { 

if (document.getElementById) { // DOM3 = IE5, NS6
    if (document.getElementById(id).style.display == "none"){
        document.getElementById(id).style.display = 'block';
        filter(("img"+id),'imgin');         
    } else {
        filter(("img"+id),'imgout');
        document.getElementById(id).style.display = 'none';         
    }   
} else { 
    if (document.layers) {  
        if (document.id.display == "none"){
            document.id.display = 'block';
            filter(("img"+id),'imgin');
        } else {
            filter(("img"+id),'imgout');    
            document.id.display = 'none';
        }
    } else {
        if (document.all.id.style.visibility == "none"){
            document.all.id.style.display = 'block';
        } else {
            filter(("img"+id),'imgout');
            document.all.id.style.display = 'none';
        }
    }
  }
}

创建 div 的 php 代码:

for ($i=0; $i < count($this->items); $i++){
  <div style="display: block;" id="g<? echo $i ?>">
  ... code that displays items
  </div>
}
4

2 回答 2

1

php 是否制作了 div 或者它们是否被硬编码并不重要——当 HTML 进入浏览器时,它已经是同样的事情了。服务器处理 PHP - 当它离开服务器并前往浏览器时,不再有 PHP。

我建议使用window.onload而不是<body onload="">

window.onload = function() {
    closeAllDivs();
};
于 2013-04-02T20:45:10.340 回答
0

感谢 Wolfman Joe 让我知道问题可能与事情的顺序无关。这告诉我 shoh() 函数可能失败并因此中断执行......所以关闭 div 的代码从未执行过。解决方案是对 shoh() 函数进行检查,以首先确保 div 存在,然后再尝试更改其属性。事实证明,并不是所有的 div $i 都被创建了。

function shoh(id) { 
  if (document.getElementById) { // DOM3 = IE5, NS6
    if (document.getElementById(id)){
        if (document.getElementById(id).style.display == "none"){
            document.getElementById(id).style.display = 'block';
            filter(("img"+id),'imgin');         
        } else {
            filter(("img"+id),'imgout');
            document.getElementById(id).style.display = 'none';         
        }   
    }   
  }
}
于 2013-04-02T21:06:52.720 回答