2017-06-13 9 views
0

私は、ウェブサイト上の各メッセージの隣に➕絵文字(ボタンとして機能する)を挿入しようとしています。例:divにテキストを挿入する

example

これは私が現在やっているものです:

contentscript.js:これは何も表示されていない

document.getElementsByClassName("className").innerHTML = "➕"; 

。私はまた完全な左に表示されませんと仮定します。これどうやってするの?

+2

getElement ** ** ByClassNameは、ループする必要がある要素のコレクションを返します。 –

+1

classNameを持つ要素が1つしかない場合は、このdocument.getElementsByClassName( "className")[0] .innerHTML = "➕"; –

+0

例:[JS:Array.forEachを使用してgetElementsByClassNameの結果を反復する](https://stackoverflow.com/questions/3871547/js-iterating-over-result-of-getelementsbyclassname-using-array-foreach) –

答えて

-1

一つだけのアイテムがクラス名で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>

+0

'Element.innerHTML'への追加は、これを達成するための*悪い*方法です。一般に、 'innerHTML'プロパティを操作しないでください。 *あなたが行ったことは、あなたが選択した要素のすべてのHTMLを置き換えます。まったく新しいDOM要素なので、以前はこれらの要素にあったイベントリスナーは存在しなくなりました。さらに、ページのその領域を完全に再レンダリングすることがあります。このような場合、 'Element.insertAdjacentHTML( 'beforeend'、 '➕');' – Makyen

+0

@Mayyenを使用してください。私は通常、jquery on( 'click'、...)を使うので、再レンダリングは問題ではありません。 – happymacarts

関連する問題