2015-10-17 83 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