Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Firefox 3.6.3中是否有人获得零高度选择字段?_Javascript_Html_Firefox - Fatal编程技术网

Javascript 在Firefox 3.6.3中是否有人获得零高度选择字段?

Javascript 在Firefox 3.6.3中是否有人获得零高度选择字段?,javascript,html,firefox,Javascript,Html,Firefox,如果在Firefox 3.6.3中打开此HTML(在一些早期版本中也已确认),并反复单击drawStuff()链接,则不会一致地呈现最后一个div的内容。仔细观察,它似乎正在渲染高度为0的选择字段。你知道为什么会这样吗 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title> A Page </title>

如果在Firefox 3.6.3中打开此HTML(在一些早期版本中也已确认),并反复单击drawStuff()链接,则不会一致地呈现最后一个div的内容。仔细观察,它似乎正在渲染高度为0的选择字段。你知道为什么会这样吗

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title> A Page </title>
    <script type="text/javascript">
      var num_select_options = 800;

      function drawStuff() {
        for (var i = 0; i <= 1; i++) {
          var foobar = document.getElementById('elem_' + i);
          while (foobar.childNodes.length >= 1) {
            foobar.removeChild(foobar.firstChild);
          }
          for (var j = 0; j < 4; j++){
            var elem_select = document.createElement('select');
            for (var k = 0; k < num_select_options; k++) {
              elem_select.appendChild(new Option("Blah", k));
            }
            foobar.appendChild(elem_select);
          }          
        }
      }
    </script>    
  </head>

  <body>
    <table border=1 style="width:900px;" summary="A Table">
      <tr>
        <td> <div id="elem_0"></div> </td>
        <td> <div>abc</div>  <div id="elem_1"></div> </td>
      </tr>
    </table>

    <a href="javascript:drawStuff()"> drawStuff() </a>

    <script type="text/javascript">
      drawStuff();
    </script>

  </body>  
</html>

一页
var num_select_options=800;
函数drawStuff(){
对于(变量i=0;i=1){
foobar.removeChild(foobar.firstChild);
}
对于(var j=0;j<4;j++){
var elem_select=document.createElement('select');
对于(var k=0;k
它对我来说是正常的

我在代码中看到的唯一奇怪的事情是,在结束标记中转义“/”字符,这是不需要的。

使用。高度真的是0吗?如果是这样,请使用其他窗格找出它的来源。也许是用户样式表

[编辑]表单元素在哪里

此外,您还将一个内联元素(
select
)放置在块元素(带有
abc的
div
)旁边。尝试在
div
中创建
选择


如果这也不起作用,请尝试使用CSS设置
select
的大小。然后用你的发现报告Firefox的一个bug。

我可以复制它。然而,我看不出你的代码有什么特别的错误

只是一个猜测。。。您正在页面中注入大量原始HTML。在某些情况下,浏览器可能无法处理它。我认为您可以尝试另一种方法:使用DOM方法,而不是
innerHTML
。比如:

var select = document.createElement("select");
select.options.push( new Option("Blah", i) );
document.getElementById("elem_" + i).appendChild(select);
根据我的经验,浏览器有时更喜欢这样

更新
您还可以尝试一件事:将所有原始HTML存储在一个变量中,然后立即执行注入。也许您可以避免与DOM函数异步执行相关的问题:-?

您使用的是什么版本的Firefox?根据Firebug,“选择”字段的高度为0。不知道为什么。页面上根本没有样式表或内联样式。谢谢您的建议。我尝试了一下,并更新了上面的html以反映这些变化。不幸的是,同样的结果。这个问题有很多奇怪的地方。如果将“num_select_options”的值降低到远小于它的值(800),问题就会消失。如果你去掉了含有“abc”的div,问题就消失了。