javascript - Apakah maksudnya apabila newClassName = element.className menukar kedudukannya?
高洛峰
高洛峰 2017-05-19 10:23:59
0
7
651

Fungsi yang betul:

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

Boleh ke menulis begini?

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

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

membalas semua(7)
过去多啦不再A梦

element.classList.add() adalah lebih mudah


Jika anda mahu serasi dengan IE10 atau ke bawah, maka saya tiada apa-apa untuk dikatakan

曾经蜡笔没有小新

bersamaan dengan

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

Ada masalah keserasian

element.classList.add('xxx');

Setaraf dengan perkara di atas, menyelesaikan isu keserasian

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

Kaedah pembungkusan lain

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

Jawapannya pasti tidak mungkin

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

    }
}

Apa yang perlu dilaksanakan ialah menambah kelas pada elemen dom Dalam cabang else, anda hanya mengendalikan rentetan Apakah gunanya tidak menetapkannya pada elemen dom pada akhirnya ? Untuk kelas tambahan berkuat kuasa, ia mesti diletakkan pada elemen 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

Selain itu, terdapat juga masalah dengan penulisan anda yang betul: 🎜
function addClass(element, value) {
    if (!element.className) {
        element.className = value;
    } else {
        element.className += ' ' + value;
        // += 运算符优先级较低,实际相当于
        // element.className += (' ' + value);
        // 即
        // element.className = element.className + (' ' + value);
    }
}
🎜Malah, cawangan lain boleh dipermudahkan🎜 rrreee
習慣沉默

Tak boleh. Tujuan fungsi ini adalah untuk menambah kelas yang dipanggil value pada element Tiada element.className dalam else anda. code> >Bagaimana dengan tugasan? newClassName hanyalah pembolehubah, digunakan untuk menyimpan class yang sedia ada dan menambah class value baharu Selepas , masukkan element.className, jadi element加上一个叫value的类,你else里面根本没有对element.className进行赋值怎么行,那个newClassName只是个变量,用来保存现有class,并加上value这个新class后,塞回element.className,所以

先有:

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

后有:

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

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

Pertama: 🎜
else {
element.className += " " + value;
}
🎜 diikuti oleh: 🎜 rrreee 🎜Malah, fungsi asal mempunyai cara penulisan yang lebih baik Tidak perlu mempunyai pembolehubah dalam else, hanya mengejanya secara terus: 🎜. rrreee
我想大声告诉你

Tidak, ia tidak berfungsi Selepas penyataan lain, newClass mesti ditetapkan terlebih dahulu sebelum operasi boleh ditetapkan semula elemen.className Jika ia dialih keluar, nampaknya tiada fungsi sedemikian

Peter_Zhu

Saya cuma salah lihat...

Tak boleh

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan