私は、ウェブサイト上の各メッセージの隣に➕絵文字(ボタンとして機能する)を挿入しようとしています。例:divにテキストを挿入する
これは私が現在やっているものです:
contentscript.js:これは何も表示されていない
document.getElementsByClassName("className").innerHTML = "➕";
。私はまた完全な左に表示されませんと仮定します。これどうやってするの?
私は、ウェブサイト上の各メッセージの隣に➕絵文字(ボタンとして機能する)を挿入しようとしています。例:divにテキストを挿入する
これは私が現在やっているものです:
contentscript.js:これは何も表示されていない
document.getElementsByClassName("className").innerHTML = "➕";
。私はまた完全な左に表示されませんと仮定します。これどうやってするの?
一つだけのアイテムがクラス名でDOMに存在する場合、あなたはあなたに項目を追加するには+=
演算子を使用して、この
document.getElementsByClassName("className")[0].innerHTML += "➕";
を行うことができ、現在の値に新しい値を追加しますinnerHTMLの
そうでなければあなたは要素のコレクションをループする必要があります(上記@Alex Kのコメントを参照してください)返さ
document.getElementsByClassName("className")[0].innerHTML += "<span class='icon'>➕</span>";
document.getElementsByClassName("icon")[0].addEventListener("click", clickFunction);
function clickFunction(){
alert("Clicked"+ this);
}
/* add whatever styles you need here */
.className {
position: relative;
padding-left: 20px;
}
.icon {
color: red;
position: absolute;
top: 0;
left: 0;
}
<div class="className">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam iaculis non quam non tristique. Cras ut imperdiet quam, pellentesque finibus nisl. Sed egestas dapibus turpis a rhoncus.</div>
'Element.innerHTML'への追加は、これを達成するための*悪い*方法です。一般に、 'innerHTML'プロパティを操作しないでください。 *あなたが行ったことは、あなたが選択した要素のすべてのHTMLを置き換えます。まったく新しいDOM要素なので、以前はこれらの要素にあったイベントリスナーは存在しなくなりました。さらに、ページのその領域を完全に再レンダリングすることがあります。このような場合、 'Element.insertAdjacentHTML( 'beforeend'、 '➕');' – Makyen
@Mayyenを使用してください。私は通常、jquery on( 'click'、...)を使うので、再レンダリングは問題ではありません。 – happymacarts
getElement ** ** ByClassNameは、ループする必要がある要素のコレクションを返します。 –
classNameを持つ要素が1つしかない場合は、このdocument.getElementsByClassName( "className")[0] .innerHTML = "➕"; –
例:[JS:Array.forEachを使用してgetElementsByClassNameの結果を反復する](https://stackoverflow.com/questions/3871547/js-iterating-over-result-of-getelementsbyclassname-using-array-foreach) –