2016-04-06 22 views
-4

私は自分の勉強のためのWebアプリケーションを作っています。基本的にTwitterのストリーミングAPIとGoogleマップを組み合わせてLat Lng値を表示します。なぜループが無限ループするのですか?

Yは、受け取ったつぶやきの数を(要素の長さをチェックする)、Xは1秒ごとに1ずつインクリメントされたテキストコンテンツを持つ要素です。

  • 私はちょうどそれが取る時間のためのいくつかのランダムな値を入れて、私はより論理的なスケール(60秒ごとまたは何か)を使用します。

グラフを作成するためにこの情報を毎分ログに記録したかったのですが、何とか無限ループにしてしまいました。ここで

は、コードは次のとおりです。あなたのif文が評価されている場合

function saveinfo(){ 
var x = document.getElementsByClassName('timer')[0].textContent; 
var y = document.getElementsByClassName('counter')[0].textContent; 
while (x != "510"){ 
    if(x = "5"){ 
     console.log(y); 

    } 
    else if (x = "200") { 
     console.log(y); 

    } 
    else if (x = "300"){ 
     console.log(y); 

    } 
    else if (x = "400"){ 
     console.log(y); 

    } 
    else if (x = "500"){ 
     console.log(y); 
     x = "510" 
    } 
} 
}; 
+2

if(x=="number")に 'X = "200" は、' 'X === "200"'などの開始のためにする必要があります。あなたはそれらが等しいかどうかをチェックしたい、200にxを代入しない。 – Andy

+0

xが '500'でない場合、変更されません – ailerifren

+1

'='は割り当てです。 '=='と '==='は比較です – j08691

答えて

3

、あなたがxを設定している:

if(x = "5"){ 

これはx"510"を等しくすることはありませんことを意味し、あなたのループが上に行くだろう永遠に。

これを修正するには、if(x === '5')

+1

この回答はコミュニティウィキを考えてください。 – Neal

+0

うん、単純な間違い本当に。しかし、実際には問題を解決するものではありません(ページを読み込むとスクリプトが応答しません)。私は@Luaanがxとyがローカルであることについて正しいと思います。要素のテキストコンテンツが変更された場合、変数も変わると仮定しました。 その場合、繰り返しごとに要素のテキストコンテンツにアクセスする必要があると思いますか? JSがシングルスレッドの場合、これは不可能ですか? –

+0

これで2つの問題が発生します: '" 5 "=== 5 // false'文字列は数字ではなく、第2です。 'x'が正確に' 500'でない限り、ループは 'x'を決して変更しないので、ループの条件は常にtrue - >無限ループです。 **あなたは 'while'キーワードを誤解していると思います** – Thomas

0

3つの主な理由のような何かをする必要があります。

  • xはローカル変数ではなく、要素内のコンテンツへの参照です。コンテンツが変更されると、xの値は変わりません。
  • =は、比較演算子ではなく、代入演算子です。比較のために==(またはそれ以上、===)を使用する必要があります。 x = "5"trueと評価されているため、最初のifを超えることはありません。
  • JavaScriptはデフォルトではシングルスレッドであるため、ループによってUIが更新されることはありません。 であっても、ローカルで読むのではなく常にタイマーの値を読み取っても、それは変わらないでしょう。
0

if/else文が機能していません。
if(x == "200")の代わりにif(x = "200")を入力します。
if/elseステートメントでは、if(x=1)が機能しません。
if(x==1)またはif(x=="1")は常に機能します。
if(x==="1")は、xが "1"と表示されている文字列の場合にのみ機能します。
if(x===1)は、xが数字の場合にのみ機能します。

すべてを行う必要が変更されif(x="number")

関連する問題