2016-11-14 5 views
0

私は現在私の大学でJavaScriptを学んでいるので、コードがひどい場合はお詫びします。私はそれが初めてです。appendChildを使用して多くのonclickから1つのイメージのみを変更するにはどうすればよいですか?

appendChildを使用して1つの画像onclickを変更するだけの問題があります。私は、rngが< = 0.89の画像をクリックすると、その画像だけが別の画像に変更されてしまうのです。私が試したすべてのものが、rngが< = 0.89だった画像をすべて変更しました。

例:0.9より大きい数字を丸めた最初のイメージ(img1)をクリックします。 (img2)が(0.9より大きい)同じものをロールした場合、それも変更されます。私はimg1を変更したいだけです。ここに私のコードのいくつかは、全体のことは、約150行であるとしてのみであり、私は、このビットはややも渡って私のポイントを取得すると思う:私が試したすべてのものは画像のみを変更、私が言ったように

function myFunction() { 
var rng=Math.random(); 
var rng2=Math.random(); 
if (rng <= 0.89){ 
    var img1=document.createElement('img'); 
    img1.src='card2.gif'; 
    img1.id="bad1"; 
    img1.onclick = goodbye; 
    document.getElementById('card').appendChild(img1); 
} 
if (rng2 <= 0.89){ 
    var img2=document.createElement('img'); 
    img2.src='card2.gif'; 
    img2.onclick= goodbye; 
    img2.id="bad2"; 
    document.getElementById('card2').appendChild(img2); 
    } 
if (rng >= 0.9) { 
    var img1=document.createElement('img'); 
    img1.src='card3.gif'; 
    img1.id="good1"; 
    img1.onclick = hello; 
    document.getElementById('card').appendChild(img1); 
} 
if (rng2 >= 0.9){ 
    var img2=document.createElement('img'); 
    img2.src='card3.gif'; 
    img2.onclick= hello; 
    img2.id="good2"; 
    document.getElementById('card2').appendChild(img2); 
    } 
} 

ことrngが< = 0.89のすべての画像を変更しました。答えはおそらく本当に明白ですが、私はこう言っています。

+0

必要であれば、あなたはすでに、彼らがクリックしたとき ')('のMyFunctionを呼び出し要素を持っています。次に、新しい 'img'要素を追加する条件を満たす場合は、乱数を計算します。そして、ウルの問題は、その常に<= 0.89だけに行くと他のものではないですか? – Searching

+0

乱数生成器はうまく動作し、回転する数値に基づいて生成したい画像を生成します。 myFunction()はonLoadと呼ばれます。私の問題は、onclickイベントをクリックした画像だけを変更することです。試したことがすべて同じ番号グループを転がったすべての画像を変更してしまったため、私はそれを行う方法を理解できません。例:0.9より大きい数値を丸めた最初のイメージ(img1)をクリックします。 (img2)が(0.9より大きい)同じものをロールした場合、それも変更されます。私はimg1を変更したいだけです。 – FuzzyBlueLights

+0

このjsfiddleをチェックして、これがあなたがhttps://jsfiddle.net/c4f1bkua/1/をやっていることを教えてもらえますか? – Searching

答えて

0

コメントに基づいて、コードに必要な唯一の変更は、.onclickを文字列ではなく関数に設定することです。このようにして、thisファンクションgoodbyehelloに要素参照を渡します。必要に応じて、thisを使用して要素プロパティを読み取ることもできます。これがあなたの探しているものでない場合は、私たちにお知らせください。

img1.onclick = function(){goodbye(this)};

スクリプト

function goodbye(e) { 
    e.src = 'https://www.youtube.com/yt/brand/media/image/YouTube-logo-full_color.png' 
} 

function hello(e) { 
    e.src = 'https://pbs.twimg.com/profile_images/767879603977191425/29zfZY6I.jpg' 
} 

function myFunction() { 
    var rng = Math.random(); 
    var rng2 = Math.random(); 
    if (rng <= 0.89) { 
     var img1 = document.createElement('img'); 
     img1.src = 'card2.gif'; 
     img1.id = "bad1"; 
     img1.onclick = function() { 
      goodbye(this) 
     }; 
     document.getElementById('card').appendChild(img1); 
    } 
    if (rng2 <= 0.89) { 
     var img2 = document.createElement('img'); 
     img2.src = 'card2.gif'; 
     img2.onclick = function() { 
      goodbye(this) 
     }; 
     img2.id = "bad2"; 
     document.getElementById('card2').appendChild(img2); 
    } 
    if (rng >= 0.9) { 
     var img1 = document.createElement('img'); 
     img1.src = 'card3.gif'; 
     img1.id = "good1"; 
     img1.onclick = function() { 
      hello(this) 
     }; 
     document.getElementById('card').appendChild(img1); 
    } 
    if (rng2 >= 0.9) { 
     var img2 = document.createElement('img'); 
     img2.src = 'card3.gif'; 
     img2.onclick = function() { 
      hello(this) 
     }; 
     img2.id = "good2"; 
     document.getElementById('card2').appendChild(img2); 
    } 
} 

jsfiddle

関連する問題