2011-01-28 4 views
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のための変数を定義しようとした理由は、(彼らがサポートされていない)ため、タグ<>で動作しませんし、それはです値。

+1

なぜこれをやりたいですか? – ChaosPandion

+1

は、最初のバージョンのように通常の構文を使用できないものですか?なぜバージョン2を使いたいのですか?そのような構文が受け入れられるという結論に至った経緯はどうでしたか? – SilentGhost

+0

私はちょうど私の質問を編集しました。 – Mori

答えて

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 />"); 
} 
+0

ハハ。私が投稿したリンクが実際にこのコードブロックがどこから来たのか分かりました! :) –

+0

私はちょうど私の質問を編集しました。 – Mori

0

xが文字列であり、あなたは、内部の文字列で文に使用することはできませんので。 forステートメントの上限を変更する必要がある場合は、修正番号5の代わりに変数を使用できます。

4

要するに、コードをデータと混同しています。 "i=0;i<=5;i++"はデータ(テキスト、文字列)です。しかし、for-loopを書くときには、初期化、条件、ステップをコードとして書く必要があります。あなたがそこに書き込むコードのように見えるテキストを渡すことはできません。 (実際には、あなたはしたくない - データが有効なコードのようなでないときに何が起こるべきか?El Ronnoco'sを参照してください)

+0

* code *と* data *の違いについてのあなたの記述は非常に洞察力があると思います。 Lispが頭に浮かんでいますが。 – ChaosPandion

+0

サイドノート:私は、Lispのユーザが来て、Lispでどのように同じであるかを説明するのを待っています(もちろん半分の真実です:完全に有用なプログラムの多くは、マクロの外では使用しません)。私を失望させないでください:) – delnan