使用字符串作为for循环表达式和条件

时间:2011-01-28 16:21:42

标签: javascript google-gadget

以下循环有效:

<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值定义变量的原因。

3 个答案:

答案 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。