2017-08-24 9 views
0

自動的にHTMLスクリプトを実行するJSファイルがあります。私はコンソールが "開始トグル"を印刷する前に "true to change"を印刷するようにしたい。その理由は、関数を呼び出して、APIを呼び出して、ロードする前にトグルの "checked"状態を変更したいからです。これはどうすればいいですか?あなたのコード内でこの変更作られた可能性がありループをJSで開始する前に関数を実行して終了させるには

$(document).ready(function(){ 
    for (var i=0;i<Object.keys(obj).length;i++) { 
     var obj_name = Object.keys(obj)[i]; 
     obj_id = "#"+obj_name; 
     $(obj_id).bootstrapToggle(); 
     console.log("starting toggle") 
    } 
}) 
$("#samplekey").ready(function() { 
    checkKey("#samplekey", power_toggles["samplekey"]); 
}) 
function checkKey(obj_id, url1){ 
    var http_verb = "GET"; 
    $.ajax({ 
     url: url1, 
     type: http_verb 
    }).done(function(data) { 
     if (data == 1234) { 
      $(obj_id).prop("checked", true); 
      console.log("changing to true") 
     } 
     else 
     { 
      $(obj_id).prop("checked", false); 
     } 
    }).fail(function(data,textStatus,errorThrown) { 
      alert(errorThrown); 
    }); 
} 
+1

余分な機能の中にループを入れて、あなたのコードにして行わ 'でそれを呼び出す()' –

答えて

2

$(document).ready(function() { 
    checkKey("#someUrl", "someUrl") 
}) 

function checkKey(obj_id, url1) { 
    var http_verb = "GET"; 
    $.ajax({ 
     url: url1, 
     type: http_verb 
    }).done(function(data) { 

     for (var i = 0; i < Object.keys(obj).length; i++) { 
      var obj_name = Object.keys(obj)[i]; 
      obj_id = "#" + obj_name; 
      $(obj_id).bootstrapToggle(); 
      console.log("starting toggle") 
     } 


     if (data == 1234) { 
      $(obj_id).prop("checked", true); 
      console.log("changing to true") 
     } else { 
      $(obj_id).prop("checked", false); 
     } 
    }).fail(function(data, textStatus, errorThrown) { 
     alert(errorThrown); 
    }); 
} 

$("#samplekey").ready(function() { 
    checkPOEPower("#samplekey", power_toggles["samplekey"]); 
}) 

とJavaScriptが非同期であることを覚えておいてくださいを、このコードが外部の要求や他のイベントのために停止しないことを意味します。

+0

これは素晴らしい感謝です! – purry

-1

ajaxリクエストを同期させる必要があります。 「非同期:偽」プロパティを追加

$.ajax({ 
    url: url1, 
    type: http_verb, 
    async: false 
}).done(function(data) { 
    if (data == 1234) { 
     $(obj_id).prop("checked", true); 
     console.log("changing to true") 
    } 
    else 
    { 
     $(obj_id).prop("checked", false); 
    } 
}).fail(function(data,textStatus,errorThrown) { 
     alert(errorThrown); 
}); 
関連する問題