こんにちは。「ふ」です。
前回まではreplaceしたい範囲を<div> 〜 </div>で囲みid名を指定。それに対してJavaScriptを仕込んできました。
HTML・JavaScript
然し乍らページ内でreplaceさせたい範囲は1箇所ではないことも多々あるはず。
複数の範囲に対して共通でJavaScriptを適用させたいときは、「id」ではなく「class」を指定してあげましょう。
◼︎「id」はページ内の固有のtagを識別させるセレクタなので、1つのページ(HTMLファイル)内に同じidのtagが存在してはいけません。
◼︎ページ内の複数のtagに対して共通のセレクタを指定したいときは、「class」を使って識別名を添えます。
HTML
ブラウザ
この「clsample」に対してreplaceメソッドを適用させていきましょう。
class要素の取得は、getElementsByClassName( )を使います。
「getElement〜」ではなく、「getElements〜 (複数形)」であることに注意してください。
innerHTMLも取得してreplaceさせてみましょう。これまでの手順でやってみます。
では実行してみま・・。
ブラウザ
んんんん!?
💧原因を調べてみましょう。
replaceメソッドをちゃんと適用させるには、その対象がString(文字列)でなくてはいけません。
先ほど変数clstrを作ってclのinnerHTMLを代入しましたが、ちゃんとStringが取得できているのか、調べてみます。
「undefined」・・見つかりません、となります。String(文字列)が取り出せていないということですね。
これではreplaceを行うことができません。
codeをもう1つ遡って調べてみましょう。
「HTMLCollection」なるものが出力されました。見たところArray(配列)っぽいが・・
HTMLCollectionとは、HTML要素の集合を表すオブジェクトです。
「配列」とは別物とされていますが、添字をつけて要素を取り出したり、length(要素数)というプロパティを持っていて、配列のように扱うことができます。
試してみましょう。
Collection内の要素の数、そして要素の内容を取り出すことができました。
扨(さて)、この1つ目の要素からinnerHTML(文字列)を取り出すことはできるのでしょうか。変数を作って調べてみます。名前はclElementにしました。
文字列を取得することができたようです。
それではHTMLCollectionの全ての要素に対してreplaceを仕込んでいきましょう。
lengthプロパティで要素の数を取得し、for文を使ってinnerHTML取り出し → replaceさせていきます。
扨、うまくいくかな?プレビューしてみましょう。
ブラウザ
やっと動いてくれましたね〜♪
試行錯誤したのちの成功、うれしい瞬間です。
今回作ってきたものはすごく便利なcodeです。これをHTMLファイルに仕込んでおけば、class属性を指定するだけで好きな箇所にJavaScriptを適用させることができます。
もちろん属性を指定する場所は<div> 〜 </div>に限らず、<p>でも<h1>でもかまいません。
classを指定しながらHTMLコードを書いていきます。
HTML
本文本文本文本文本文本文本文本文本文本文本文本文 本文本文本文本文本文本文本文本文本文本文本文本文
本文本文本文本文本文本文本文本文本文本文本文本文 本文本文本文本文本文本文本文本文本文本文本文本文
りんごについて詳しく知るブラウザ
てきとーにコードを書きなぐってみましたが、ちゃんとreplaceされています。
class要素にreplaceメソッドを適用させるのには一苦労でしたけども。自分好みのreplaceを仕込んで、実用的なwebコードエディタを作ってみてください♬
swift、web、ガジェットなど。役立つ情報や観ていてたのしいページを書いていきたいと思います。
🐧 twitter 🐧