获取具有相同类前缀和/或相同后缀的PACK OF ELEMENTS,然后更新此PACK

时间:2012-09-17 20:35:50

标签: javascript

我们举个例子:

<div class="gg-1"></div> // 1
<div class="gg-1"></div> // 1
<div class="gg-1"></div> // 1

<div class="gg-3"></div> // 3
<div class="gg-3"></div> // 3

<div class="gg-5"></div> // 5
<div class="gg-5"></div> // 5

我如何更新这些div类以获得以下结果?

<div class="gg-1"></div> // 1
<div class="gg-1"></div> // 1
<div class="gg-1"></div> // 1

<div class="gg-2"></div> // 2
<div class="gg-2"></div> // 2

<div class="gg-3"></div> // 3
<div class="gg-3"></div> // 3

需要纯Javascript(JQuery作为附加)。

我的下面的函数可以帮助您按类添加元素:

function scn$(container,selectorTag,prefix) {
    var items = [], myPosts = document.getElementById(container).getElementsByTagName(selectorTag);

    for (var i = 0; i < myPosts.length; i++) {
        // Omit Undefined Null Check
        if (myPosts[i].className.lastIndexOf(prefix,0) === 0) {
            items.push(myPosts[i]);
        }
    }
    return items;
}

所以现在我们可以按scn$('container','div','gg-')选择我们的元素。

下一步是什么?有什么想法/线索吗?

1 个答案:

答案 0 :(得分:1)

尝试以下方法并告诉我,

DEMO: http://jsfiddle.net/pmc3g/

(function() {

    function scn$(container, selectorTag, prefix) {
        var items = [],
            myPosts = document.getElementById(container).getElementsByTagName(selectorTag);

        var prevClass = null, curVal = 0;
        for (var i = 0; i < myPosts.length; i++) {
            var curClass = myPosts[i].className;
            // Omit Undefined Null Check
            if (curClass.lastIndexOf(prefix, 0) === 0) {

                if (prevClass != curClass) {
                    prevClass = curClass;
                    curVal++;                   
                }

                myPosts[i].className = prefix + curVal;
                items.push(myPosts[i]);
                console.log(myPosts[i].className);
            }
        }
        return items;
    }

    scn$('container', 'div', 'gg-');

})();