以下循环有效:
<html>
<body>
<script type="text/javascript">
var i=0;
for (i=0;i<=5;i++)
{
document.write("The number is " + i);
document.write("<br />");
}
</script>
</body>
</html>
但以下情况并非如此:
<html>
<body>
<script type="text/javascript">
var i=0;
var x="i=0;i<=5;i++"
for (x)
{
document.write("The number is " + i);
document.write("<br />");
}
</script>
</body>
</html>
我只想创建一个简单的变量。 请耐心等待我,因为我是JavaScript新手,让我知道我错过了什么。
让我提供我的示例Google小工具:
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
<ModulePrefs title="Sample Gadget" />
<UserPref name="order"
display_name="Results Order"
default_value="i = 0; i <= 5; i++" datatype="enum">
<EnumValue value="i = 0; i <= 5; i++" display_value="Ascending"/>
<EnumValue value="i = 5; i >= 0; i--" display_value="Descending"/>
</UserPref>
<Content type="html"><![CDATA[
<script type="text/javascript">
var i=0;
for (__UP_order__)
{
document.write("The number is " + i);
document.write("<br />");
}
</script>
]]></Content>
</Module>
由于标签&lt;&gt;而无效(它们不受支持),这就是我试图为EnumValue值定义变量的原因。
答案 0 :(得分:5)
当您说var x="i=0;i<=5;i++"
时,您正在创建文本字符串。这不是您所期望的JavaScript解释。
语句和文本字符串之间存在明显差异。即使它看起来像是一样的东西,它看起来像一个文本字符串,如"hello"
或"sdflkjsdflkjsdflj"
。 JavaScript不期望文本字符串作为循环参数,它期待three loop control parameters/statements。如果你想要一个在不同点开始和结束的循环,那就做这样的事情......
var i=0;
var start=0; //you can change the start position by changing this
var end=5; //and you can change the end also
for (i=start;i<=end;i++)
{
document.write("The number is " + i);
document.write("<br />");
}
答案 1 :(得分:4)
简而言之:您将代码与数据混淆。 "i=0;i<=5;i++"
是数据(一段文字,一个字符串)。但是在编写for循环时,你必须编写初始化,条件和步骤作为代码 - 你不能传递看起来像你在那里编写的代码的文本。 (事实上,你不想 - 当数据不像那样的有效代码时会发生什么?更不用说它不需要了 - 请参阅El Ronnoco的)
答案 2 :(得分:0)
因为x是一个字符串,你不能使用带有字符串的for语句。 如果需要更改for语句的上限,可以使用变量而不是修订号5。