2017-12-26 6 views
0

私は自分のサイトで友人を手伝っています。特定の色のボタンのクリックで画像を変更したいと思っています。私はデータカラーで作業してみました。チェックしても機能しませんが、ほとんどの場合は機能しません。また、ハード・フィックスとして、単色ごとにチェックを行うコードを作成しました。これを1つの関数で簡単に実行できるかどうかを知りたい私はそれをやっているよりもatm笑!カラーボタンをクリックすると画像が切り替わります

コード: ここで私は色とチェック

<h2> kies een kleur</h2> 
<a href='#' onclick='red()'><div class="red colorChoose" data-color = 'red'> 
</div></a> 

とここを選んだようにユーザーに尋ねる私はイメージを置き換えます

<div class="imageLook"><img alt="image" id="imageReplace" 
src="image location"></div> 

とJavaScript

function red() 
{ 
    if (document.getElementsByTagName("div")[2].getAttribute("data-color") == "red"){  
     document.getElementById("imageReplace").src="image location"; 
    } 
} 

用jsコードでは、それはすべてで動作しませんので、私はそれが巨大であれば私はkwowしないlp ...この問題に多大な努力をしてくれた人には申し訳ありません。大変ありがとう! https://jsfiddle.net/ft5b8w9a/

ご協力ありがとうございました!

+0

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。今までJSFiddleにあなたの作業コードが含まれているようにしてください... –

+0

クリックしたボタンは別のものですが、赤を押しても、関数の中の最後のものは、青の場合はelse、青の場合は画像が与えられ、赤の場合は無視されます。私は赤色のボタンのイメージが青いものではなく、チェックが機能するように、データの色属性を正しくチェックする方法を知りたいと思っています。これがもう少し明確になることを願っています – Emile

+0

? document.body.addEventListener( "クリック"、関数(イベント){ ここで(event.target.getAttribute( "データカラー")=== "赤"){// 変化画像場合デバッガ。 } }); – xadhix

答えて

0

もう1つの方法は、色名の代わりにファイル名を使用することです。

var img = document.querySelector('img'); 
 
var buttons = document.querySelectorAll('button'); 
 

 
// Use an object as a dictionary to map a color to a filename. 
 
var basePath = 'path/to/img/'; 
 

 

 
// Add event listener is JS not in the HTML. 
 
for (var i = 0, len = buttons.length; i < len; i++) { 
 

 
    var btn = buttons[ i ]; 
 
    
 
    btn.addEventListener('click', function (e) { 
 
    var file = basePath + this.getAttribute('data-file'); 
 
    img.src = file; 
 
    img.alt = file; 
 
    }); 
 
    
 
}
<img src="path/to/img/default.jpg" alt="path/to/img/default.jpg"> 
 

 
<h2>Colors</h2> 
 
<button data-file="apple.jpg">Red</button> 
 
<button data-file="cloud.jpg">White</button> 
 
<button data-file="sky.jpg">Blue</button>

あなたが本当に色の名前をしたい何らかの理由であれば、私は、ファイルへのカラーオプションをマップ「辞書」を作成することがあります。全体的に

var img = document.querySelector('img'); 
 
var buttons = document.querySelectorAll('button'); 
 

 
// Use an object as a dictionary to map a color to a filename. 
 
var basePath = 'path/to/img/'; 
 
var colorToFile = { 
 
    'red': 'apple.jpg', 
 
    'white': 'cloud.jpg', 
 
    'blue': 'sky.jpg' 
 
}; 
 

 
// Add event listener is JS not in the HTML. 
 
for (var i = 0, len = buttons.length; i < len; i++) { 
 

 
    var btn = buttons[ i ]; 
 
    
 
    btn.addEventListener('click', function (e) { 
 
    img.src = basePath + colorToFile[ this.getAttribute('data-color') ]; 
 
    img.alt = basePath + colorToFile[ this.getAttribute('data-color') ]; 
 
    }); 
 
    
 
}
<img src="path/to/img/default.jpg" alt="path/to/img/default.jpg"> 
 

 
<h2>Colors</h2> 
 
<button data-color="red">Red</button> 
 
<button data-color="white">White</button> 
 
<button data-color="blue">Blue</button>

あなたはそれを助けることができれば、私はあなたのHTMLにイベントハンドラを追加すること(すなわち、<a onclick="function()">)を避けるだろう。

+0

助けてくれてありがとう!これは私がそれを望んでいた方法です!ありがとう!私は私のための解決策としてあなたをマーク!ビッグ+1! – Emile

+0

また、aria- *属性とrole属性を使用してARIA対応にすることもできます。私はそれを行う方法のサンプルを作成しました:https://jsfiddle.net/flaviocysne/jrh3z6tL/ –

+0

@FlavioCysne質問の範囲を超えて、笑。しかし、そうです。 – hungerstar

関連する問題