こんにちは、さるまりんです。
Webページ上でボタンやリンクをクリックしたら表示変えたいなって時ないですか?
今日はそれです。JavaScript
です。
HTMLの要素の中身を変更
JavaScriptでHTMLの要素の中身を変更するプロパティは次の3つです。
innerHTML
innerText
textContent
どう違うの?
innerHTML
innerHTML
はHTML
を設定するとそれをちゃんとHTML
として表示してくれます。
こんな感じです。
JavaScript
function feed() {
var elem = document.getElementById("how-you-feel-text");
elem.innerHTML = "<span style='color: blue;'>ありがとう。お腹いっぱい。</span>";
}
document.getElementById("feed-button").addEventListener("click", feed);
HTML
<p id="how-you-feel-text">お腹すいた</p>
<button id="feed-button">食事をあげる</button>
ボタンを押してみてください。お腹すいたが変わりますよ。
お腹すいた
innerText と textContent
innerText
とtextContent
は設定したものがそのまま出力されます。
それぞれに<span style='color: red;'>食べたよ</span>
を設定すると、赤色で「食べたよ」が表示されるわけではなくHTML
のタグも含めてそのまま表示されます。
こんな感じです。
JavaScript
function feedA() {
var elemA = document.getElementById("how-a-feel-text");
var elemB = document.getElementById("how-b-feel-text");
elemA.innerText = "<span style='color: blue;'>ありがとう。お腹いっぱい。</span>";
elemB.textContent = "<span style='color: red;'>え?僕には?</span>";
}
document.getElementById("feed-a-button").addEventListener("click", feedA);
HTML
<p id="how-a-feel-text">お腹すいた</p>
<p id="how-b-feel-text">お腹すいた</p>
<button id="feed-a-button">食事をあげる</button>
ボタンを押してみてください。こちらは「お腹すいた」が2つ。それぞれ変わりますよ。
お腹すいた
お腹すいた
この2つは何が違うのかをざっくりいうとブラウザでのサポートです。
textContent
はInternet Explorerでサポートされておらず、innerText
はFireFoxでサポートされていません。
※どちらも新しいバージョンのブラウザでは動作します。
jQueryでは?
これをjQuery
を使うとこんな実装になります。
innerHTML相当
JavaScript
$("#feed-u-button").on('click', function() {
$("#how-u-feel-text").html("<span style='color: blue;'>ありがとう。お腹いっぱい。</span>");
});
HTML
<p id="how-u-feel-text">お腹すいた</p>
<button id="feed-u-button">食事をあげる</button>
ボタンを押してみてください。
お腹すいた
textContent、innerText相当
JavaScript
$("#feed-c-button").on('click', function() {
$("#how-c-feel-text").text("<span style='color: blue;'>ありがとう。お腹いっぱい。</span>");
$("#how-d-feel-text").text("<span style='color: red;'>え?僕には?</span>");
});
HTML
<p id="how-c-feel-text">お腹すいた</p>
<p id="how-d-feel-text">お腹すいた</p>
<button id="feed-c-button">食事をあげる</button>
ボタンを押してみてください。
お腹すいた
お腹すいた
使える環境ならこちらの方が楽(?)かもしれませんね。
最近、HTML/CSS/JavaScriptの必要性を痛感しています。
僕は無知だ。勉強しよう。
読んでくださってありがとうございます。
ではまた!