2015-08-14 75 views
0

我在.hta文件中使用trashitem類的div數。在點擊一個特定的div時,我需要將其邊框更改爲3px和紅色。當選擇不同的div時,我需要原始div恢復爲其原始樣式(1px黑色邊框),並且ALSO將此第二個div的邊框更改爲3px紅色。單擊後更改div的樣式,並在單擊另一個div時將其更改回

基本上一次只有一個div可以是紅色的。

純JavaScript比jQuery更受歡迎。我假設我需要將一個類應用於點擊的div,並且如果選擇了另一個div,則將其從此類中移除,同時將此第二個div添加到類或其他類中?

所有的div有類trashitem,但他們各自的onclick引用一個獨特的功能,見下圖:

<div class="trashitem" onclick="Writedata13()"> 
    <div class="photobox"> 
     <img src="http://www.fakeImage.JPG"> 
    </div> 
</div> 

<div class="trashitem" onclick="Writedata14()"> 
    <div class="photobox"> 
     <img src="http://www.fakeImage.JPG"> 
    </div> 
</div> 

<div class="trashitem" onclick="Writedata15()"> 
    <div class="photobox"> 
     <img src="http://www.fakeImage.JPG"> 
    </div> 
</div> 

更新的代碼


JAVASCRIPT

<script language="javascript"> 
function Writedata14(event) 
{ 
var a = event.target; 
a.style.cssText = 'width:330px;height:10px;background-color:black'; 
} 
</script> 

HTML

<div class="trashitem" onclick="Writedata14()"> 
    <div class="photobox"> 
     <img src="http://www.fakeImage.JPG"> 
    </div> 
</div> 

<div class="trashitem" onclick="Writedata15()"> 
    <div class="photobox"> 
     <img src="http://www.fakeImage.JPG"> 
    </div> 
</div> 

鏈接Codepen demo: http://codepen.io/anon/pen/LVvvME

+0

*「我假設我需要將類應用於點擊的div,並將其從類中刪除,如果選擇了另一個div,而將該第二個div添加到類或其他東西?」 - 是的,確實。 – GolezTrol

+0

我在StackOverflow上搜索了1.5小時,所有的解決方案都是jQuery。你能幫我解決嗎?我不知道如何繼續。除了讓我感到蠢的東西外,還有什麼值得歡迎的。謝謝 – Mathomatic

+0

所有的功能是做什麼的?鑑於命名,似乎他們可能會做同樣的事情,但只有微小的差異?順便提一下,請不要從您的問題中刪除示例代碼;一個鏈接到外部演示被賞識爲獎金,但代碼*必須*在問題本身。 –

回答

1

避免使用內嵌javascript,這是棄用。

嘗試使用這樣的:

document.addEventListener("DOMContentLoaded", function() { 
 
    var myitem = document.querySelectorAll(".trashitem"); 
 
    for(h=0; h<myitem.length; h++){ 
 
     myitem[h].addEventListener("click",function(e){ 
 
      var myitem = document.querySelectorAll(".trashitem"); 
 

 
      for(h=0; h<myitem.length; h++){ 
 
       myitem[h].classList.remove("bordered"); 
 
      } 
 

 
      this.classList.add("bordered"); 
 

 
     }); 
 
    } 
 
});
.bordered{ 
 
    border: 3px solid red; 
 
} 
 

 
.trashitem{ 
 
    display: inline-block; 
 
    margin: 20px; 
 
    width: 100px; 
 
    height: 100px; 
 
} 
 

 
.trashitem img{ 
 
    width: 100%; 
 
    height: 100%; 
 
}
Click the box 
 

 
<div class="trashitem"> 
 
    <div class="photobox"> 
 
     <img src="http://i.stack.imgur.com/gijdH.jpg?s=328&g=1"> 
 
    </div> 
 
</div> 
 
<div class="trashitem" > 
 
    <div class="photobox"> 
 
     <img src="http://i.stack.imgur.com/gijdH.jpg?s=328&g=1"> 
 
    </div> 
 
</div> 
 
<div class="trashitem" > 
 
    <div class="photobox"> 
 
     <img src="http://i.stack.imgur.com/gijdH.jpg?s=328&g=1"> 
 
    </div> 
 
</div>

編輯:

您可以嘗試使用.onclick這樣的:

window.onload = function (event) { 
 

 
    var myitem = document.querySelectorAll(".trashitem"); 
 
    for(h=0; h<myitem.length; h++){ 
 
     myitem[h].onclick = function(e){ 
 
      var myitem = document.querySelectorAll(".trashitem"); 
 

 
      for(h=0; h<myitem.length; h++){ 
 
       myitem[h].classList.remove("bordered"); 
 
      } 
 

 
      this.classList.add("bordered"); 
 

 
     }; 
 
    } 
 
};
.bordered{ 
 
    border: 3px solid red; 
 
} 
 

 
.trashitem{ 
 
    display: inline-block; 
 
    margin: 20px; 
 
    width: 100px; 
 
    height: 100px; 
 
} 
 

 
.trashitem img{ 
 
    width: 100%; 
 
    height: 100%; 
 
}
Click the box 
 

 
<div class="trashitem"> 
 
    <div class="photobox"> 
 
     <img src="http://i.stack.imgur.com/gijdH.jpg?s=328&g=1"> 
 
    </div> 
 
</div> 
 
<div class="trashitem" > 
 
    <div class="photobox"> 
 
     <img src="http://i.stack.imgur.com/gijdH.jpg?s=328&g=1"> 
 
    </div> 
 
</div> 
 
<div class="trashitem" > 
 
    <div class="photobox"> 
 
     <img src="http://i.stack.imgur.com/gijdH.jpg?s=328&g=1"> 
 
    </div> 
 
</div>

+0

謝謝你們,但是當我在我的.hta文件中運行這段代碼時,它說「對象不支持屬性或方法'addEventListener'。 – Mathomatic

+0

這是一個鏈接我的完整.hta文件,它很短,請幫助〜http://pastebin.com/MvmcqDUn – Mathomatic

+0

@DavidThomas你是對的,這是一個錯字,我更新了我的答案來修復它,並且我添加了一個工作示例 –

0

你可以得到被點擊與

event.target; 

的元素,你可能會做這樣的事情

<script type="text/javascript"> 
     function Writedata13(){ 
      var a = event.target; 
      a.style.cssText = 'width:330px;height:10px;background-color:black';   
     } 
</script> 

看到這種以獲得更多關於它的信息 http://www.w3schools.com/jsref/event_target.asp

+0

這似乎是一個可能的解決方案,謝謝。兩個問題:當我添加你的代碼,然後單擊該div時,出現錯誤:「無法獲取屬性」風格「的未定義或空引用。」這是指cssText部分? 其次,您的解決方案似乎會改變div的風格,但如果之後再點擊另一個div,它會將其更改爲BACK嗎?感謝Spycomb – Mathomatic

+0

'函數Writedata13()'應聲明爲'function Writedata13(event)'。然後你將有一個事件對象,你可以獲得目標元素。 – GolezTrol

+0

謝謝Golez,但現在我得到了和以前一樣的錯誤,但現在說「目標」未定義或爲空。這裏是一個codepen鏈接,但是我需要邊框在點擊時保持紅色,直到點擊另一個div。 http://codepen.io/anon/pen/LVvvME – Mathomatic