2012-01-03 3 views
0

Je veux vérifier si mydiv avoir ou ne pas si elle ne l'avez pas, une classe , ajouter quoi que ce soit à l'intérieur du varnewClass. Je tente de le faire comme ça, mais il ne fonctionne pas:variables match indexOf dans ce cas particulier

var newClass="classToBeAdded"; 

if(document.getElementById("mydiv").className.indexOf(/(?:^|)(newClass)(?:$|)/)==-1){ 
    document.getElementById("mydiv").className+=" "+newClass; 
} 

Répondre

2

Utilisez cette :

var newClass = "classToBeAdded"; 
var d = document.getElementById("mydiv"); 
var r = new RegExp(" " + newClass + " "); 
if (r.test(" " + d.className + " ")) 
    // do something here 

Ou, similaire:

var d = document.getElementById("mydiv"); 
if ((" " + d.className + " ").indexOf(" " + newClass + " ") != -1) 
    // do something here 

Les espaces sont ajoutés avant et après la chaîne className afin que nous puissions correspondre à la classe cible, peu importe où il apparaît dans la chaîne.

Certains tests

On suppose la fonction suivante:

function hasClass(str, name) { 
    return (" " + str + " ").indexOf(" " + name + " ") != -1; 
} 

Tests:

hasClass("target", "target") // true 
hasClass("test target test1", "target") // true 
hasClass("test1 target", "target") // true 
hasClass("target test1", "target") // true 
hasClass("test1", "target") // false 
+0

will "" "+ newClass +" "' cocher pour le premier/dernier Des classes? –

+0

@TuxedoKnightChess - Oui. Essayez-le. –

+0

'" (^ |) + "+ newClass +" ($ |) + "' ferait un tour (n'a pas essayé mais présume qu'il le ferait) –

1

Vous pouvez utiliser javascript propriété de l'élément dom

document.getElementById("mydiv").classList 

il retourne un tableau de noms de classes attribuées

+0

il ne fonctionne pas dans les anciennes versions des navigateurs https://developer.mozilla.org/en/DOM/element.classList#Browser_compatibility –

+0

+1 Je ne savais pas 'classList', mais il a besoin de nouveaux navigateurs (https://developer.mozilla.org/en/DOM/element.classList). –

+1

C'est vrai, mais il y a toujours moyen d'étendre un prototype pour ajouter une propriété;) mais vous devriez utiliser jQuery ou similaire pour vous faciliter la vie –

0

Vous devriez probablement utiliser une bibliothèque abstraire ce genre de questions pour vous.

La règle générale est que vous devriez vous concentrer sur vos problèmes spécifiques au domaine plutôt que de réinventer la roue.

jQuery .hassClass est un bon candidat

Questions connexes