2017-12-30 8 views
0

onclickを使用して画像のソースを変更する際に問題が発生しました。 getElementByIdを使用した場合は動作しますが、getElementsByClassNameの場合は動作しません。onclickは画像ソースを変更します

ここではビンだ...

<h1>Image swapping</h1> 
<img src="http://via.placeholder.com/350x150" class="image_swap"/><br> 
<button onclick="document.getElementsByClassName('image_swap').src='http://via.placeholder.com/250x150'">Swap to smaller</button> 
<button onclick="document.getElementsByClassName('image_swap').src='http://via.placeholder.com/350x150'">Swap to larger</button> 

https://jsbin.com/gupabe/6/edit?html

答えて

0

(あなたが同じクラス名を持つ複数のものを持つことができますので)document.GetElementsByClassNameは、要素のリストを返す は、最初に選択するようにコードを調整します簡単な修正

https://jsbin.com/sevituduxu/1/edit?html,output

<button onclick="document.getElementsByClassName('image_swap')[0].src='http://via.placeholder.com/250x150'">Swap to smaller</button> 
<button onclick="document.getElementsByClassName('image_swap')[0].src='http://via.placeholder.com/350x150'">Swap to larger</button> 
ための
0

インラインイベントを追加するのは不気味ですが、それは懸念の分離です。各ボタンにイベントを追加するaddEventListener &を使用します。次にdocument.getElementsByClassNameは、コレクションを返します。それは参考になりました、ありがとうございましたので、特定の要素

document.getElementById('smaller').addEventListener('click', function() { 
 
    document.getElementsByClassName('image_swap')[0].src = 'http://via.placeholder.com/350x150' 
 
}); 
 

 
document.getElementById('larger').addEventListener('click', function() { 
 
    document.getElementsByClassName('image_swap')[0].src = 'http://via.placeholder.com/250x150' 
 

 
})
<h1>Image swapping</h1> 
 
<img src="http://via.placeholder.com/350x150" class="image_swap" /><br> 
 

 
<button id="smaller">Swap to smaller</button> 
 
<button id="larger">Swap to larger</button>

+0

にイベントを追加するために、インデックスを渡す必要があります – Nag

関連する問題