2017-03-20 8 views
0

私は2枚の写真とポイントカウンターを含むウェブページを作ろうとしていました。ページがロードされると、ピクチャ1が選択され、ピクチャ2は選択解除される。 pic1をクリックすると、何も起こりませんが、pic2をクリックすると選択され、pic1はdesselectedになります。 pic2をクリックすると、何も起こりませんが、pic1をクリックすると選択され、pic2がdesselectedなどになります。背景をクリックすると、pic1が選択されている場合はpic2が選択されている場合は1ポイント、 5点を追加します。また、選択した写真の周りに黄色の四角形を描く必要があります。バックグラウンドだけでポイントをつけることができない限り、すべてが機能しています。私は次のコードを試してみましたが、ポイント・カウンター全体が機能しなくなりました。背景をクリック可能にするにはどうすればいいですか?

function addPoint(number) { 
 
    points = points + number; 
 
    document.getElementById("points").innerHTML = points; 
 
}; 
 

 
function pointsAmmount() { 
 
    chkBox1 = document.getElementById("picture1").checked; 
 
    addPoint(chkBox1 ? 1 : 5); 
 
}; 
 

 
function checkPicture1() { 
 
    document.getElementById("picture1").checked = true; 
 
} 
 

 
function uncheckPicture1() { 
 
    document.getElementById("picture1").checked = false; 
 
} 
 

 
function addBorder1() { 
 
    document.getElementById("pic1").style.border = "5px solid yellow"; 
 
} 
 

 
function addBorder2() { 
 
    document.getElementById("pic2").style.border = "5px solid yellow"; 
 
} 
 

 
function removeBorder1() { 
 
    document.getElementById("pic1").style.border = "5px solid white"; 
 
} 
 

 
function removeBorder2() { 
 
    document.getElementById("pic2").style.border = "5px solid white"; 
 
} 
 

 
function onPageload() { 
 
    checkPicture1(); 
 
    addBorder1(); 
 
    removeBorder2(); 
 
} 
 
window.onload = onPageload; 
 
background.onmousedown = pointsAmmount; 
 
var points = 0;
input[type=checkbox] { 
 
    display: none; 
 
} 
 

 
input[type=button] { 
 
    display: none; 
 
}
<p align="center">Points: <span id="points">0</span></p> 
 
<p align="center"> 
 
    <label for="picture1"> 
 
    <img src="eslcc_logo.png" alt="eslcc logo" id="pic1"/> 
 
    </label> 
 
</p> 
 
<input id="picture1" type="checkbox" onchange="checkPicture1()" onclick=" 
 
    addBorder1(); 
 
    removeBorder2();" /> 
 
<p align="center"> 
 
    <label for="picture2"> 
 
    <img src="imac.jpg" alt="iMac" id="pic2"/> 
 
    </label> 
 
</p> 
 
<input id="picture2" type="button" onclick=" 
 
    uncheckPicture1(); 
 
    addBorder2(); 
 
    removeBorder1();" />

また、私はjqueryのを使用できないことを指摘したいと思います。

+0

あなたは変数 'background'を使用しますが、それが定義されていません。これにより、コードが機能しなくなります。あなたはおそらく['document.body'](https://developer.mozilla.org/en-US/docs/Web/API/Document/body)を使ってほしいでしょうか?デバッグにWebコンソールを使用して調べることができます。私はあなたのコードを実行可能なスニペットにする編集を提案しました - そこにコンソールのエラーを見ることができます。 –

答えて

1

ターゲットがonmousedownの場合、ターゲット(クリックされた要素)がIMGであるかどうかを確認し、そうでない場合はポイントを追加できます。

function addPoint(number){ 
 
points = points + number; 
 
document.getElementById("points").innerHTML = points; 
 
}; 
 
function pointsAmmount(){ 
 
chkBox1 = document.getElementById("picture1").checked; 
 
addPoint(chkBox1 ? 1 : 5); 
 
}; 
 
function checkPicture1(){ 
 
document.getElementById("picture1").checked = true; 
 
} 
 
function uncheckPicture1(){ 
 
document.getElementById("picture1").checked = false; 
 
} 
 
function addBorder1(){ 
 
document.getElementById("pic1").style.border = "5px solid yellow"; 
 
} 
 
function addBorder2(){ 
 
document.getElementById("pic2").style.border = "5px solid yellow"; 
 
} 
 
function removeBorder1(){ 
 
document.getElementById("pic1").style.border = "5px solid white"; 
 
} 
 
function removeBorder2(){ 
 
document.getElementById("pic2").style.border = "5px solid white"; 
 
} 
 
function onPageload(){ 
 
checkPicture1(); 
 
addBorder1(); 
 
removeBorder2(); 
 
} 
 
window.onload = onPageload; 
 
document.getElementsByTagName('html')[0].onmousedown = function(e) { 
 
    if(e.target.tagName!="IMG") pointsAmmount(); 
 
} 
 
var points = 0;
input[type=checkbox]{ 
 
    display:none; 
 
} 
 
input[type=button]{ 
 
    display:none; 
 
} 
 
html { 
 
    height: 100%; 
 
}
<p align="center">Points: <span id="points">0</span></p> 
 
<p align="center"><label for="picture1"><img src="eslcc_logo.png" alt="eslcc logo" id="pic1"/></label></p> 
 
<input id="picture1" type="checkbox" onchange="checkPicture1()" onclick="addBorder1(); removeBorder2();"/> 
 
<p align="center"><label for="picture2"><img src="imac.jpg" alt="iMac" id="pic2"/></label></p> 
 
<input id="picture2" type="button" onclick="uncheckPicture1(); addBorder2(); removeBorder1();" />

+0

よく機能します。ただし、pic2の下にあるページの部分をクリックするとポイントが与えられないという問題があります。あなたはそれを修正する方法を知っていますか? – DiNotABot

+0

そうですね、私はコードを更新しましたが、今でもそこで動作します。それをチェックしてください。 –

関連する問題