Javascript ile <html> sınıfına eklensin mi?


88

<html>Javascript kullanarak kök öğeye nasıl sınıf eklersiniz ?


Bu, başladığımda sorduğum sorulardan biriydi. Bundan bahseden iyi bir yer bulamadım. Burada gördüğüme sevindim.
Pow-Ian

Sadece merak ediyorum - bunu neden yapmak isteyesiniz?
David Hoerster

@David Modernizr'in yüklenmemesi durumunda bir yedek eklemek için. Modernizr, yüklendiğinde "js" sınıfını ekler.
Brandon Lebedev

1
Modernizr kullanıyorsanız, işaretlemenize gerçekten "no-js" sınıfını eklemelisiniz. (Modernizr yüklerse bu sınıfı kaldıracaktır)
Kevin Boucher

@Kevin - Zaten yaptım. Git HTML5 Demirbaş !
Brandon Lebedev

Yanıtlar:


113

Bunun gibi:

var root = document.getElementsByTagName( 'html' )[0]; // '0' to assign the first (and only `HTML` tag)

root.setAttribute( 'class', 'myCssClass' );

Veya daha önce uygulanan sınıfları korumak için bunu 'ayarlayıcı' çizginiz olarak kullanın: (teşekkürler @ ama2)

root.className += ' myCssClass';

Veya gerekli tarayıcı desteğine bağlı olarak şu classList.add()yöntemi kullanabilirsiniz :

root.classList.add('myCssClass');

https://developer.mozilla.org/en-US/docs/Web/API/Element/classList http://caniuse.com/#feat=classlist

GÜNCELLEME:

Öğeye referans vermek için daha zarif bir çözüm HTMLşu olabilir:

var root = document.documentElement;
root.className += ' myCssClass';
// ... or:
//  root.classList.add('myCssClass');
//

Bilginize, classlist.add / .remove, document.documentElement üzerinde çalışmıyor.
Andy Mercer

@AndyMercer It's classList.add(deve çantası).
Kevin Boucher

Evet belli ki bu bir yazım hatasıydı. Ama söylediklerim hala doğru. classListdocument.documetElement üzerinde çalışmaz.
Andy Mercer

Yanıt vermeden önce üç farklı tarayıcıda denedim, bu yüzden "açıkça bir yazım hatası" değildi. (Chrome, Firefox, Safari - üçünde de root.classList.add('myCssClass')çalıştı.) IE kullanıyor musunuz?
Kevin Boucher

document.documentElement.classList.addburada iyi çalışıyor gibi görünüyor. 2018'de tarayıcılar bunu desteklemeye başladı mı?
adrian

15

Bu da işe yaramalı:

document.documentElement.className = 'myClass';

Uyumluluk .

Düzenle:

IE 10, salt okunur olduğunu varsayar; hala:

İşe yaradı!?

Opera çalışır:

İşler

Ayrıca çalıştığını onaylayabilirim:

  • Chrome 26
  • Firefox 19.02
  • Safari 5.1.7

U+200BÖrneğinizde GÖRÜNMEZ KARAKTERLER var, yani son kesme işaretinden sonra, web paketinde ve diğer derleyicilerde derlemede başarısız olmasına neden oluyor!
entozoon

@entozoon ne kadar garip! Bunu belirttiğiniz için teşekkürler. Şimdi düzelttim :)
c24w

11

JQuery'ye bir göz atmanızı tavsiye ederim .

jQuery yolu:

$("html").addClass("myClass");

26
JavaScript ile bir eleman seçmek için jQuery'ye ihtiyacınız yoktur.
David Hoerster

1
jQuery aslında öğrenmesi kolay ve bu günlerde çoğu zaman zaten kullanılıyor. Ama evet, bu görev için buna ihtiyacınız yok;)
aebersold

1
evet, doğru,
jquery'nin

2
@aebersold jQuery'nin öğrenilmesinin ve kullanılmasının kolay olduğunu kabul ediyorum, ancak 50K'da indirmek (artı ek bir istek) sadece bir sınıf eklemek için biraz fazla IMHO.
David Hoerster

JQuery'ye ölüm! Vanilla JS galibiyet için!
Fresheyeball


7

Sınıf eklemelisiniz, üzerine yazmamalısınız

var headCSS = document.getElementsByTagName("html")[0].getAttribute("class") || "";
document.getElementsByTagName("html")[0].setAttribute("class",headCSS +"foo");

Tarayıcı uyumsuzluklarından kaçınmak için jQuery kullanmanızı tavsiye ederim.


-2

Jquery ile ... html öğelerine aşağıdaki gibi sınıf ekleyebilirsiniz:

$(".divclass").find("p,h1,h2,h3,figure,span,a").addClass('nameclassorid');

nameclassorid nokta yok veya başında #

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.