Javascript不工作,我需要帮助。有人建议我不要使用document.write

Javascript不工作,我需要帮助。有人建议我不要使用document.write,javascript,html,Javascript,Html,我有下面的Javascript代码,但是它不工作。有人能帮我解决这个问题吗 以下是我想要实现的目标: 将游戏数量增加到用户p1请求的数量 检查是否只输入了有效的数字 第一个10和第二个10 p3之间的换行符 有什么帮助吗 <html> <head> <title>processing</title> </head> <body> <form name="proc

我有下面的Javascript代码,但是它不工作。有人能帮我解决这个问题吗

以下是我想要实现的目标:

  • 将游戏数量增加到用户p1请求的数量
  • 检查是否只输入了有效的数字
  • 第一个10和第二个10 p3之间的换行符
  • 有什么帮助吗

    <html>
        <head>
            <title>processing</title>
        </head>
    
        <body>
            <form name="processing" action="processing.php" method="POST">
                <input type="hidden" name="check_submit" value="1" />
                <p>Please select the numbers of players:</p>
                <select>
                    <SCRIPT Language="JavaScript">
                        for (i = 1; i <= 8; i++) {
                            document.write('<option value="' + i + '">' + i + '</option>');
                        }
                    </script>
                </select>
                <input type="submit" />Scores From Game 1:
                <SCRIPT Language="JavaScript">
                    for (i = 0; i < 20; i++) {
    
                        document.write('<input type="number" name="scores[]" min="0" max="10" value="0"/>')
    
                    }
                </script>
                <input type="submit" />
            </form>
        </body>
    
    </html>
    
    
    处理
    请选择玩家数量:


    对于(i=1;i而不是使用
    document.write
    要动态插入HTML内容,请使用DOM API:

    o = document.createElement('option');
    o.value = i;
    o.appendChild(document.createTextElement(i));
    select.appendChild(o);
    
    document.write
    不受欢迎,因为浏览器预解析器无法优化使用此方法插入的HTML内容。如果您尝试执行类似
    document.write(“”)的操作;
    ,浏览器必须等到JavaScript被解析并执行后才能加载图像。正常插入时,预解析器能够发现图像并预加载
    pic.jpg


    不赞成的另一个原因是,JavaScript必须位于您希望插入HTML的确切位置。这会导致HTML文档中分散的代码碎片,很难维护,并且会阻止以后在页面中呈现HTML。

    与其使用JavaScript,为什么不只使用原始HTML?

    。。。
    1.
    2.
    3.
    4.
    5.
    6.
    7.
    8.
    ...
    
    建议正确的人-避免使用
    文档。编写
    支持
    文档。由于
    文档,CreateElement
    。编写
    可以破坏DOM使用。不仅如此,还可以通过在
    选择
    元素中添加
    脚本来破坏语义-错误

    让我们重新编写代码。假设您有:

    <select id="NumPlayers">
    </select>
    
    
    
    以及您当前的代码:

     for (i = 1; i <= 8; i++) {
                   document.write('<option value="' + i + '">' + i + '</option>');
     }
    


    for(i=1;i)你不工作是什么意思。你期望什么?发生了什么事?虽然你写了一些代码,但闻起来像是一个“为我做作业吧!”的问题…@doliver…人们说不要使用
    文档。写
    是因为它可能被误用。你使用它是正确的。总会有人说“不要用这个或那个"因为这个工具可能会被误用。我不同意这种偏执的开发方法。你应该做的是理解你使用的工具,并正确使用它们。准备好一个信息量巨大的答案,讽刺的是,这可能会让用户2312345更糟,还有一个tut网站链接线程。
    document.write
    是一把枪,你可以明智地使用它,也可以朝自己的脚开枪。如果它没有坏,就不要修理它。但是如果你准备学习新技术,肯定有很多网站可以使用它。(站在启蒙、顿悟和敬畏中)我说不出我有多想投票支持它,你刚刚创造了我的一天:)可能是因为在进行更改时需要额外下载和更高的维护。这是能够使用
    document.write
    生成标记的一部分。这是真正的解决方案。至于@sillylittleme,取舍是搜索引擎实际看到的字段以及禁用JS的浏览器。Hi Rick,这正是我想要的我在寻找。这是因为每个游戏中玩家的数量可以改变。我不希望额外的单元格占用空间,也不希望为特定数量的玩家固定。这就是为什么我希望动态生成html。是的,这应该是一个注释。OP不需要实际查看所有编写的html来理解它。“因为JavaScript必须位于要插入HTML的确切位置“-嗯,语句的执行必须在您希望HTML结束的地方。您可以很容易地将此代码放入函数中,
    中,然后只在您希望
    文档的地方调用函数。将
    写入happenJS的头部更糟糕!;)但是您是对的,函数定义可以在任何地方。你仍然会遇到所描述的问题,只剩下一行较小的代码。JS怎么会更糟糕呢?我的天哪,“天哪,这很糟糕!我不知道为什么,但它很糟糕”。为什么人们说把JS放在头上是不好的,是因为大多数浏览器一次只能加载两个并发脚本,并且会在这一点上冻结渲染,直到它们完成为止。如果少于两个脚本标记,则head参数不相关。将脚本标记一直放在页面底部的原因是,如果浏览器冻结渲染,则页面已完全渲染,仅此而已。(这只是火上浇油——你链接的最后一个页面,来自yahoo,基于性能并说JS在头部是件坏事……在文档的头部加载YUI。他们为什么这样做?因为YUI包含一个异步模块加载器)OP所示的document.write怎么可能会破坏DOM?!@bfavaretto:我说document.write可以破坏DOM结构,但事实并非如此。但是,我知道,如果您给它一个select->script->option序列,至少有一个浏览器会呕吐。您可以使用
    var c=new选项,而不是
    document.createElement(“option”)
    (i,i);
    而不是
    selectTag.appendChild(c);
    ,可以使用
    selectTag.add(c);
    。只是选择,不重要,这是有意义的;选择>脚本确实是无效的html,但可以通过文档避免。编写选择也可以。@Ian:谢谢你的修改。把它们放进去。
    window.onload = function() {
       var selectTag = document.getElementById("NumPlayers");
       for (var i = 0; i <= 8; i++) {
           var c = new Option(i,i);
           selectTag.add(c);
       }
    };