3

以下循环有效:

<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>

由于标签 <> (不支持它们),它不起作用,这就是我尝试为 EnumValue 值定义变量的原因。

4

3 回答 3

5

当您说var x="i=0;i<=5;i++"您正在创建一个文本字符串时。正如您所期望的那样,这不会被 JavaScript 解释。

语句和文本字符串之间有明显的区别。尽管它在眼睛看来是一样的,但在解释器看来它就像一个文本字符串,比如"hello"or "sdflkjsdflkjsdflj"。JavaScript 不期望文本字符串作为循环参数,它期望三个循环控制参数/语句。如果您想要一个在不同点开始和结束的循环,请执行以下操作...

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 />");
}
于 2011-01-28T16:27:21.540 回答
4

简而言之:您将代码与数据混淆了。"i=0;i<=5;i++"是数据(一段文本,一个字符串)。但是在编写 for 循环时,您必须将初始化、条件和步骤编写为代码——您不能传递恰好看起来像您在那里编写的代码的文本。(事实上​​,你不想 - 当数据不像有效代码时会发生什么更不用说它不需要 - 参见 El Ronnoco's)

于 2011-01-28T16:30:29.253 回答
0

因为 x 是一个字符串,你不能使用 for 语句里面有一个字符串。如果您需要更改 for 语句的上限,您可以使用变量而不是修复号 5。

于 2011-01-28T16:28:15.533 回答