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