2015-10-17 87 views
0

我有自定義標記<movie>。我想通過添加類或者做一些不同的事來操縱onclick(分別單獨)。這是我的代碼。將classList.add添加到自定義HTML5標記的第n個子標記

window.onload = function() 
 
{ 
 
    var movie1 = document.getElementsByTagName("movie")[0]; 
 
    var movie2 = document.getElementsByTagName("movie")[1]; 
 
    var movie3 = document.getElementsByTagName("movie")[2]; 
 
    var movie4 = document.getElementsByTagName("movie")[3]; 
 
    movie1.onclick = function() { 
 
     movie1.classList.add("transparent"); 
 
     } 
 
    movie2.onclick = function() { 
 
     movie2.classList.toggle("transparent"); 
 
     } 
 
    movie3.onclick = function() { 
 
     movie3.parentNode.removeChild(movie3); 
 
     } 
 
    movie4.onclick = function() { 
 
     movie4.innerHTML = movie2.innerHTML; 
 
     } 
 
};

<container> 
 
    
 
    <movie> 
 
     <title></title> 
 
     <img src="" alt="" /> 
 
     <p></p> 
 
    </movie> 
 
    
 
    <movie> 
 
     <title></title> 
 
     <img src="" alt="" /> 
 
     <p></p> 
 
    </movie> 
 
    
 
    <movie> 
 
     <title></title> 
 
     <img src="" alt="" /> 
 
     <p></p> 
 
    </movie> 
 
    
 
    <movie> 
 
     <title></title> 
 
     <img src="" alt="" /> 
 
     <p></p> 
 
    </movie> 
 
    
 
    
 
    </container>

我敢肯定這是不是要做到這一點的最好辦法,我嘗試使用document.querySelectorAll使代碼更短,但無法做到。 有沒有更好更短的方法來完成這個任務?我可以繼續這樣做,但如果你給我一個更好的方法,這將是非常有教育意義的。

+0

事實上,在新的標籤名稱的形式引入誤差不做到這一點的最好辦法。另外,大多數瀏覽器不會以這種方式重用標題元素。 –

+0

你能提出一個更好的方法來用純JavaScript來做到這一點嗎? – user2962129

回答

-1

如果你可以使用jQuery, var movies = $('movie'); movies.click(function(){ if ($(this) == movies[0]) {$(this).addClass('transparent');} if ($(this) == movies[1]) {$(this).toogleClass('transparent');} if ($(this) == movies[2]) {$(this).remove();} if ($(this) == movies[3]} {$(this).html(movies[1].html());} });

+0

謝謝你的答案,但我有興趣做這個沒有像jQuery的任何圖書館。你可以請給我一個替代這個純JavaScript的? – user2962129

+0

而不是$('movie')使用document.querySelectorAll('movie'),$(this)變成this,而不是addClass()使用你在OP中提供的相同的東西,而不是html()使用innerHTML =/jQuery只是JS方法的簡化! – Noctisdark