2日間すべての関連記事を検索しても成功しません。 私のコードは、ローカルストレージを使用して、ページが更新されたときにチェックボックスの状態を保存および取得します。これはうまくいく。私は以来、外部のHTMLファイルからdivにチェックボックスをロードするために私のコードを拡張し、これはタイミングの問題を引き起こしている。ローカルストレージを管理するコードが実行されすぎて、チェックボックスがdivにロードされません。コードを遅らせるための多くの努力は失敗しました。私の最近の努力は意図された効果を持たない「setTimeout」です(フィドル参照)。ちなみに、コードを止めるのに十分な「アラート」があれば、私はこれがすべて動作することが証明されています。最善の方法で私を助けてください。とても有難い。 https://jsfiddle.net/Ldn2awxb/スクリプトを実行する前に外部HTMLを確実に読み込む
https://code.jquery.com/jquery-2.2.3.min.js
<div id="CountryCheckboxContainer">
<!-- Checkboxes below are loaded from external HTML file
<label><input type="checkbox" id="UN8" value="Albania" />Albania</label>
<label><input type="checkbox" id="UN40" value="Austria" />Austria</label>
<label><input type="checkbox" id="UN100" value="Bulgaria" />Bulgaria</label>
-->
</div>
// Load from external files
function LoadCheckboxes() {
setTimeout(function()
{ $("#CountryCheckboxContainer").load("https://c2ect538.caspio.com/dp.asp?AppKey=b8a94000b0cf30c15313458e91a0");
}, 500);
}
// set and get items
$(function() {
LoadCheckboxes();
var checkboxValues = JSON.parse(localStorage.getItem('checkboxValues')) || {},
$checkboxes = $("#CountryCheckboxContainer :checkbox");
$checkboxes.on("change", function() {
$checkboxes.each(function() {
checkboxValues[this.id] = this.checked;
});
localStorage.setItem("checkboxValues", JSON.stringify(checkboxValues));
});
// On page load
$.each(checkboxValues, function(key, value) {
$("#" + key).prop('checked', value);
});
});
興味深いことに、私は.load()がコールバックを持っているかどうかわかりませんでした。それにもかかわらず、私はこれを私のために働かせるために苦労しています...おそらく私はコードを配置する場所を正確に理解していません。 – Silverburch
@ Silverburch私はあなたのコードの一部を誤解していることに気付きました。私は新しい理解に基づいて答えを更新しました。 – Ouroborus
問題はありません。私はそこに少し髪を引っ張っていました!私はまだこれを動作させることができません... FirefoxとIE(すべて最新)で試してみました。それはあなたのために働くのですか? – Silverburch