2010-03-02 11 views
11
CSS :(jsbin yoluyla ızgara görünümüyle olmak için bu kod yazmak için denemek

)bir unsuru

var tables = document.getElementsByClassName('tableData'); 
    var rows = tables[0].getElementsByTagName('tr'); 
for(var i=1; i<rows.length; i +=2) { 
    alert(rows[i]); 
    rows[i].className = "alt"; 
} 

Bu yalnızca class="" sahiptir tr elemanları ile çalışır için sınıf ekleyin. Ama eğer tr'e sınıf eklemek istersem. Core.addClass'i denedim ama çalışmıyor. Öznitelik zaten mevcut olmadığında bile

cevap

6

çalışması gerekir rows[i].className += " alt";

+0

, Güzel ve basit çok teşekkürler :) bize – nXqd

0

Bu deneyin:

rows[i].setAttribute("class", "alt"); 

http://www.w3schools.com/Dom/met_element_setattribute.asp

+0

biri soruyu yanlış anlama olduğunu. Senin olduğuna inanıyorum. – SLaks

+0

Haklı olabilirsiniz. –

+0

@SLaks: Bence ikiniz de farklı şekillerde yanlışsınız. tehMick, sanırım "satırlar" i olmalı .setAttribute ("sınıf", satırlar [i] .getAttribute ("sınıf") + "alt"); – voyager

1

Bir Javascript çerçevesinden kullanmak isteyebilirsiniz. Firefox ve Internet Explorer'ın her ikisinin de sınıf isimleri eklemek için farklı yaklaşımları olduğu ortaya çıkıyor. Firefox için

, sana IE yapabileceğiniz ederken

element.setAttribute('class','<className>'); 

yapmak zorunda inanıyoruz

element.className='<className>'; 

DÜZENLEME

O Firefox element.className niteliği destekler çıkıyor . Ancak, Internet Explorer element.setAttribute('class'...)'u anlamıyor. SetAttribute işlev çağrısını kullanmak istiyorsanız, element.setAttribute('className'...) yapmalısınız.

jQuery

Eğer

$(element).addClass('<className>'); 

yapabilirsiniz arayüz sağlayan ve tüm tarayıcı belirsizlikler ilgilenir. Sınıf özniteliklerini yönetmek ve test etmek için removeClass() ve hasClass() işlevleri de vardır.

Yani senaryoda, yapacağın: Daha fazla jQuery işlevselliği ile daha da bu basitleştirmek olabilir

var tables = document.getElementsByClassName('tableData'); 
var rows = tables[0].getElementsByTagName('tr'); 
for(var i=1; i<rows.length; i +=2) { 
    // alert(rows[i]); 
    $(rows[i]).addClass("alt"); 
} 

Not. Zaten yoksa

+0

başındaki çiviye çarptı. –

+1

'element.className =" name ";' Firefox'ta doğru çalışıyor. – voyager

+1

Yöntem setAttribute, IE'de de çalışır. Standart, Firefox'a özgü değil. Ayrıca, className sadece IE değil, Firefox tarafından desteklenir. –

2

Bu yalnızca sınıf adını katacak

var classToAdd = 'alt'; 
if (rows.className.length == 0) 
{ 
    rows.className = classToAdd; 
} 
else if (rows.className.indexOf(classToAdd) < 0) 
{ 
    rows.className += ' ' + classToAdd; 
} 
28

İki yıl sonra (2012/06), bir yeni ve parlak bir yaklaşım var - yöntemlere add(), remove() ile element.classList, toggle() , .

rows[i].classList.add("alt"); 

  • Chrome'u 8+
  • Firefox 3.6+
  • Internet Explorer'ın 10+
  • Opera 11 desteklenir.50+
  • Safari 5.1+
+6

+1 sadece bu yazı beni mutlu etti =) – mkoistinen

İlgili konular