国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - What does it mean when newClassName = element.className changes its position?
高洛峰
高洛峰 2017-05-19 10:23:59
0
7
686

Correct function:

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

Is it okay to write it like this?

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

擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項目經(jīng)理、高級軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...

reply all(7)
過去多啦不再A夢

element.classList.add() is more convenient


If you want to be compatible with IE10 or below, then I have nothing to say

曾經(jīng)蠟筆沒有小新

is equivalent to

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

There is a compatibility issue

element.classList.add('xxx');

Equivalent to the above, solving compatibility issues

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

Other packaging methods

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|$)'), ' ');
    };
};
阿神

The answer is definitely not possible

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

    }
}

What this needs to be implemented is to add a class to the dom element. elseIn the branch, you only operate a string. What is the use if it is not set to the dom element in the end? For the added class to take effect, it must be placed on the dom element

In addition, there is also a problem with your correct writing:

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

In factelsebranching can be simplified

function addClass(element, value) {
    if (!element.className) {
        element.className = value;
    } else {
        element.className += ' ' + value;
        // += 運算符優(yōu)先級較低,實際相當(dāng)于
        // element.className += (' ' + value);
        // 即
        // element.className = element.className + (' ' + value);
    }
}
習(xí)慣沉默

Can’t. The purpose of the function is to give element加上一個叫value的類,你else里面根本沒有對element.className進行賦值怎么行,那個newClassName只是個變量,用來保存現(xiàn)有class,并加上value這個新class后,塞回element.className, so

First:

newClassName = element.className;//記下現(xiàn)有

is followed by:

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

In fact, the original function has a better way of writing. elseThere is no need to get a variable in it, just spell it directly:

else {
element.className += " " + value;
}
我想大聲告訴你

No, it’s not possible. NewClass must be assigned first after the else statement before the operation can be reassigned to element.className. If it is removed, it seems that there is no such function

Peter_Zhu

I just saw it wrong...

No way

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template