HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

JavaScriptでHTML属性値を変更する方法|href属性を書き換える2つの手法

JavaScriptを使ってHTML要素の属性値を変更する方法を解説します。

たとえば、Webサイト上のアンカー要素の href 属性に、誤ったURLパスが設定されてしまったとします。

こうしたトラブルが起こりやすいのは、メニューやナビゲーションバーです。

<nav>
    <ul>
        <li>
            <a href="/path-to-your-page" id="some-id">Link</a>
        </li>
    </ul>
</nav>

また、サイト最下部のフッターも内部リンクが設置される代表的な場所の一つです。

誰かがミスをして、href の値が /contact-me になっているのに、正しくは /contact-us であるべき——そんな状況を想像してください。何らかの理由でHTMLコードを直接修正できないこともあります(バックエンドへの書き込み権限がない、など)。

訪問者がクリックしたときに空白ページが表示されないよう、早急に対処しなければなりません。

CMS(コンテンツ管理システム)経由でフロントエンドのコードにアクセスできるのであれば、JavaScriptを使ってアンカー要素の既存の href 値を上書きできます。バックエンドには一切手を加える必要がありません。

ここでは、2つの異なる方法をご紹介します。

IDを指定して要素を選択する

各ナビゲーションリンクに一意のIDが付与された、次のようなHTMLマークアップがあるとします。

<nav>
	<ul>
		<li>
			<a href="/" id="home">Home</a>
		</li>
		<li>
			<a href="/services" id="services">Services</a>
		</li>
		<li>
			<a href="/contact-me" id="contact">Contact</a>
		</li>
	</ul>
</nav>

ここでは、Contactリンクの href 値を変更したいと考えます。

まず、IDをもとにアンカー(リンク)要素を選択します。

const contactLink = document.querySelector('#contact')

次に、ドット記法でアンカー要素の href 属性にアクセスし、新しい値 /contact-us を代入します。

contactLink.href = '/contact-us'

これだけです!

コンソールに出力してみると、以前の誤った href 属性値が、新しい正しいURLパスに置き換えられていることが確認できます。

console.log(contactLink.href)
// 出力結果: "https://your-domain.com/contact-us"

JSコード全体:

// IDをもとにアンカー(リンク)要素を選択
const contactLink = document.querySelector('#contact')

// href値を変更
contactLink.href = '/contact-us'

// 結果を出力
console.log(contactLink.href)

特定の文字列値をもとに要素を選択する

HTMLのリンク要素に、一意のIDやクラスが付与されていないケースもあります。その場合、マークアップは次のようになっているでしょう。

<nav>
	<ul>
		<li>
		    <a href="/">Home</a>
		</li>
		<li>
		    <a href="/services">Services</a>
		</li>
		<li>
		    <a href="/contact-me">Contact</a>
		</li>
	</ul>
</nav>

それでも問題ありません。querySelector() にCSS3セレクターを組み合わせれば、特定の文字列値(この場合は /contact-me)を持つ要素を正確に指定して選択できます。

具体的なコードは以下の通りです。

const contactLink = document.querySelector('a[href*="/contact-me"]')

変数から href 値を出力して、目的の値が正しく取得できているか確認してみましょう。

console.log(contactLink.href)
// 出力結果: "https://your-domain.com/contact-me"

しっかり取得できていますね!

あとは前の例と同じように、href 値を正しいURLパスに変更するだけです。

contactLink.href = '/contact-us'

コード全体:

// 特定のhref文字列値を持つリンクを選択
const contactLink = document.querySelector('a[href*="/contact-me"]')

// href文字列値を変更
contactLink.href = '/contact-us'

// 結果を出力
console.log(contactLink.href)
  1. HTMLのoption要素におけるvalue属性とは?基本構文とサンプルコードで解説

    HTMLのvalue属性は、<option>要素に対してサーバーへ送信する値を指定するための属性です。フォーム送信時に、ユーザーが選択した選択肢の値がこの属性の内容として送られます。値そのものは画面上には表示されず、表示されるテキスト(ラベル)とは別に内部的なデータを持たせられるのが特徴です。基本構文value属性の基本的な書き方は以下のとおりです。<option value=テキスト></option>value属性には任意の文字列を指定できます。省略した場合は、<option>要素内のテキストがそのまま送信されます。使用例ここでは、好きな科目

  2. HTMLのvalue属性とは?使い方とサンプルコードをわかりやすく解説

    HTMLのvalue属性は、HTMLドキュメント内で要素の初期値(デフォルト値)を定義するための属性です。この属性は、button、input、meter、li、option、progress、paramといったHTML要素に対して使用できます。value属性はフォームやUIコンポーネントにおいて重要な役割を果たします。例えば、input要素では入力欄にあらかじめ表示されるテキストを指定でき、meter要素やprogress要素では現在の進捗状況を数値で表現できます。構文value属性の基本的な構文は以下のとおりです。<tagname value="text">