javascript - Qu'est-ce que cela signifie lorsque newClassName = element.className change de position?
高洛峰
高洛峰 2017-05-19 10:23:59
0
7
615

Fonction correcte :

function addClass(element,value) {
    if(!element.className) {
        element.className = value;
    } else {
        newClassName = element.className;
        newClassName += " ";
        newClassName += value;
        element.className = newClassName;
    }
}

Est-ce que c'est bien de l'écrire comme ça ?

function addClass(element,value) {
    if(!element.className) {
        element.className = value;
    } else {
        
        newClassName += " ";
        newClassName += value;
        
}
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous(7)
过去多啦不再A梦

element.classList.add() est plus pratique


Si vous souhaitez être compatible avec IE10 ou version antérieure, alors je n'ai rien à dire

曾经蜡笔没有小新

équivaut à

element.className = element.className + " " + value;
洪涛

Il y a un problème de compatibilité

element.classList.add('xxx');

Équivalent à ce qui précède, résolvant les problèmes de compatibilité

element.className+=''+'xxx';

Autres méthodes d'emballage

function hasClass(elements, cName) {
    return !!elements.className.match(new RegExp('(\s|^)' + cName + '(\s|$)'));
};

function addClass(elements, cName) {
    if (!hasClass(elements, cName)) {
        elements.className += ' ' + cName;
    };
};

function removeClass(elements, cName) {
    if (hasClass(elements, cName)) {
        elements.className = elements.className.replace(new RegExp('(\s|^)' + cName + '(\s|$)'), ' ');
    };
};
阿神

La réponse n'est définitivement pas possible

function addClass(element, value) {
    if (!element.className) {
        element.className = value;
    } else {
        newClassName += " ";
        newClassName += value;

    }
}

Ce que cela doit être implémenté, c'est d'ajouter une classe à l'élément dom. Dans la branche else, vous n'utilisez qu'une chaîne. À quoi sert-elle de ne pas la définir sur l'élément dom à la fin. ? Pour que la classe ajoutée prenne effet, elle doit être placée sur l'élément domelse分支里面,你只操作一个字符串,最后没有设给dom元素能有什么用呢? 添加的类要生效,肯定是必须要放到dom元素上去的

另外你的正确写法也存在问题:

function addClass(element,value) {
    if(!element.className) {
        element.className = value;
    } else {
        // newClassName未声明 ,隐式全局变量
        newClassName = element.className;
        newClassName += " ";
        newClassName += value;
        element.className = newClassName;
    }
}

其实else

De plus, il y a aussi un problème avec votre écriture correcte : 🎜
function addClass(element, value) {
    if (!element.className) {
        element.className = value;
    } else {
        element.className += ' ' + value;
        // += 运算符优先级较低,实际相当于
        // element.className += (' ' + value);
        // 即
        // element.className = element.className + (' ' + value);
    }
}
🎜En fait, la branche else peut être simplifiée🎜 rrreee
習慣沉默

Je ne peux pas. Le but de la fonction est d'ajouter une classe appelée value à element. Il n'y a pas de element.className dans votre elsecode> >Que diriez-vous de l'affectation ? Le newClassName est juste une variable, utilisée pour enregistrer la class existante et ajouter la nouvelle class value Après , insérez element.className, donc element加上一个叫value的类,你else里面根本没有对element.className进行赋值怎么行,那个newClassName只是个变量,用来保存现有class,并加上value这个新class后,塞回element.className,所以

先有:

newClassName = element.className;//记下现有

后有:

element.className = newClassName;//塞回元素

事实上,原函数有更优的写法,else

Premier : 🎜
else {
element.className += " " + value;
}
🎜 est suivi de : 🎜 rrreee 🎜En fait, la fonction originale a une meilleure façon d'écrire. Il n'est pas nécessaire d'avoir une variable dans else, épelez-la simplement directement : 🎜 rrreee
我想大声告诉你

Non, cela ne fonctionne pas. Après l'instruction else, newClass doit d'abord être attribué avant que l'opération puisse être réaffectée element.className S'il est supprimé, il semble qu'une telle fonction n'existe pas

.
Peter_Zhu

Je viens de mal voir...

Pas question

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal