jQueryでクラス "ToChange"のブロック内のテキストを変更します。それは現在のhtmlファイル内でうまく動作しますが、外部のhtmlファイルでは( "load"メソッドで挿入しても)それはありません。ここに私のコードは次のとおりです。JQueryで読み込んだページのinnerHTMLを変更するには
のindex.html:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Home page</title>
<script src="jquery-3.1.1.js"></script>
<script>
$(function(){
$('.insert_external').load("external.html");
});
</script>
<script>
$(function(){
length = document.getElementsByClassName("ToChange").length;
for (i = 0; i < length; i++) {
document.getElementsByClassName("ToChange")[i].innerHTML = "New Text";
}
});
</script>
</head>
<body>
<div class="insert_external"></div>
<div class="ToChange">
This changes fine
</div>
<div class="ToChange">
This changes fine too
</div>
</body>
</html>
external.html:
:<div class="ToChange"> This text does not change :( </div>
私は3つの文字列を参照してください結果
このテキストは:(
新しいテキスト
新しいテキスト
を変更しないと私はそれらのすべてが「新しいテキスト」になりたいです。 jQueryでhtmlとjsのみを使用することは可能ですか?
JavaScriptは非同期で動作します。置換機能はロード機能の前に終了するので、古いテキストが表示されます。関数を実行するには、 '.load()'関数の 'complete'コールバックを使用します(もう一度)。 – Ivar