[解決済み] 未定義のプロパティ 'replace' が読み込めない - JS で生成された HTML のテキストを置換する。
2022-02-02 17:44:55
質問
順不同のリストがあります (
ul
) は、外部 javascript によって生成されます。各リスト項目には、削除したい行が繰り返されています。外部javascriptを変更することができないので、replaceメソッドを使用しようとしています。リストは、それぞれの
li
要素を使用します。
rss-item
.
以下は、私のコードです。
<script>
function myFunction() {
var str = document.getElementsByClassName('rss-item').innerHTML;
var res = str.replace('Text to replace', '');
document.getElementsByClassName('rss-item').innerHTML = res;
}
</script>
<button onclick="myFunction()">Replace</button>
次の行でエラーが発生しています。
var res = str.replace('Text to replace', '');
エラーの状態です。
Uncaught TypeError: Cannot read property 'replace' of undefined
私が理解したところでは、これはおそらく、javascriptがクラス名「rss-item」の要素を見つけられないか、私が置き換えようとしているテキストが見つからないかのどちらかです。このクラス名が正しいこと、そして置き換えようとしているテキストが本当にそこにあることは、絶対に間違いありません。この問題は、マークアップがjavascriptによって生成されているために発生するのでしょうか?私は行き詰まりました。
どうすればいいですか?
document.getElementsByClassName('rss-item')
は配列のようなオブジェクトを返します。
HTMLCollection
). もし、最初の要素が欲しいなら、それを要求すべきです。
var str = document.getElementsByClassName('rss-item')[0].innerHTML;
もう少し防御的でありたいなら、以下のような方法で、実際に要素が見つかったかどうかを確認する価値があるかもしれません。
var elements = document.getElementsByClassName('rss-item');
if (elements.length > 0) {
elements[0].innerHTML = elements[0].innerHTML.replace('Text to replace', '');
}
コメントでご指摘いただいたように、見つかったすべての要素に対して置換を行いたい場合があります。この場合、次のように要素をループさせることができます。
var elements = document.getElementsByClassName('rss-item');
for (var i = 0; i < elements.length; ++i) {
elements[i].innerHTML = elements[i].innerHTML.replace('Text to replace', '');
}
関連
-
[解決済み】Javascript:getElementById対getElementsById(両方が別のページで動作する)。
-
[解決済み】JavaScriptのinnerHTMLで要素が更新されない
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み] Sublime Text 2を使ってHTMLコードを再フォーマットするにはどうしたらいいですか?
-
[解決済み] テキストからHTMLを取り除く JavaScript
-
[解決済み] 入力フィールドから属性を読み込むと、HTMLエンコーディングが失われる
-
[解決済み] HTMLのテキスト入力でクリックするとすべてのテキストが選択される
-
[解決済み] React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】HTMLのテキスト入力で数値入力しかできない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】jquery $.ajaxオブジェクトのresponseJSONプロパティを取得する方法 [重複]。
-
[解決済み】Uncaught ReferenceError。Reactが定義されていない
-
[解決済み】未定義のプロパティ 'bind' を読み込めない。React.js【重複あり
-
[解決済み] エラー。モジュールhtmlが見つからない
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】'useState' が定義されていない no-undef React
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools