2012-09-19 16 views
0

我有多個頁面,需要一致的<body>類,再加上每頁獨一無二的類。我想動態設置這些值以消除在頁面級別管理常量類。使用javascript爲身體標記創建類

理想的解決方案將從一個空的<body>標籤開始,其中創建的javascript將允許我在需要時注入類。潛在的屬性是

tabClass, catClass, secClass, pageClass 

其中任何組合都可以存在,包括根本沒有。 任何人都可以幫助我嗎?我正處於學習Javascript的開始階段,所以我現在爲我的無知道歉。謝謝。

理想的輸出將是:

bodyClasses = (tabClass, catClass, secClass) 
pageClass = (pageClass) 
+1

所以,你的問題是分配類的DOM元素或究竟是什麼? –

+0

可能的幫助 - https://developer.mozilla.org/en-US/docs/DOM/element.className – Phil

回答

0

好像你需要這樣一些功能:

var util = util || {}; 

util.trim = function(s) { 
    return s.replace(/(^\s+)|(\s+$)/g,'').replace(/\s+/g,' '); 
} 

util.dom = util.dom || {}; 

util.dom.hasClassName = function(el, cName) { 
    if (typeof el == 'string') el = document.getElementById(el); 

    var re = new RegExp('(^|\\s+)' + cName + '(\\s+|$)'); 
    return el && re.test(el.className); 
} 

util.dom.addClassName = function(el, cName) { 

    if (typeof el == 'string') el = document.getElementById(el); 

    if (!util.dom.hasClassName(el, cName)) { 
     el.className = util.trim(el.className + ' ' + cName); 
    } 
} 

util.dom.addClassNames = function(el) { 

    if (typeof el == 'string') el = document.getElementById(el); 

    for (var i=1, iLen=arguments.length; i<iLen; i++) { 
     util.dom.addClassName(el, arguments[i]); 
    } 
} 

util.dom.removeClassName = function(el, cName) { 

    if (typeof el == 'string') el = document.getElementById(el); 

    if (util.dom.hasClassName(el, cName)) { 
     var re = new RegExp('(^|\\s+)' + cName + '(\\s+|$)','g'); 
     el.className = util.trim(el.className.replace(re, '')); 
    } 
} 

,並利用它們喜歡:

var body = document.body; 
util.dom.addClassName(body, 'tabClass'); 

的addClassNames函數有多個參數:

util.dom.addClassNames(body, 'tabClass', 'catClass', 'secClass'); 

注意,如果元素已經在類,它不會添加第二次。

+0

RobG,這工作完美!非常感謝。 – trobbins26

2

在腳本元素的開幕<body>標籤後某處:

var commonClasses = "tabClass catClass secClass", 
    currentPageClasses; 

/* Your own logic here to determine what classes apply to the 
    current page, add them to currentPageClasses variable */ 

document.getElementsByTagName("body")[0].className += " " 
                + commonClasses 
                + " " 
                + currentPageClasses; 

演示:http://jsfiddle.net/nnnnnn/FhMP8/

相關問題