<script type="text/javascript">
var typeSort = document.getElementById('sortTypeUp').value;
if(typeSort == '1'){
document.getElementById('bewertung').className='tab_subbox tab2 tabon';
document.getElementById('price').className='tab_subbox tab3';
document.getElementById('kategorie').className='tab_subbox tab4';
document.getElementById('distance').className='tab_subbox tab5';
document.getElementById('bypois').className='tab_subbox tab6';
document.getElementById('opodoTriangle').style.display='block';
document.getElementById('priceTriangle').style.display='none';
document.getElementById('reviewTriangle').style.display='none';
document.getElementById('distanceTriangle').style.display='none';
document.getElementById('bypoisTriangle').style.display='none';
}
else if(typeSort == '2'){
document.getElementById('bewertung').className='tab_subbox tab2';
document.getElementById('price').className='tab_subbox tab3 tabon';
document.getElementById('kategorie').className='tab_subbox tab4';
document.getElementById('distance').className='tab_subbox tab5';
document.getElementById('bypois').className='tab_subbox tab6';
document.getElementById('opodoTriangle').style.display='none';
document.getElementById('priceTriangle').style.display='block';
document.getElementById('reviewTriangle').style.display='none';
document.getElementById('distanceTriangle').style.display='none';
document.getElementById('bypoisTriangle').style.display='none';
}
else if(typeSort == '3'){
document.getElementById('bewertung').className='tab_subbox tab2';
document.getElementById('price').className='tab_subbox tab3';
document.getElementById('kategorie').className='tab_subbox tab4 tabon';
document.getElementById('distance').className='tab_subbox tab5';
document.getElementById('bypois').className='tab_subbox tab6';
document.getElementById('opodoTriangle').style.display='none';
document.getElementById('priceTriangle').style.display='none';
document.getElementById('reviewTriangle').style.display='block';
document.getElementById('distanceTriangle').style.display='none';
document.getElementById('bypoisTriangle').style.display='none';
}
else if(typeSort == '4'){
document.getElementById('bewertung').className='tab_subbox tab2';
document.getElementById('price').className='tab_subbox tab3';
document.getElementById('kategorie').className='tab_subbox tab4';
document.getElementById('distance').className='tab_subbox tab5 tabon';
document.getElementById('bypois').className='tab_subbox tab6';
document.getElementById('opodoTriangle').style.display='none';
document.getElementById('priceTriangle').style.display='none';
document.getElementById('reviewTriangle').style.display='none';
document.getElementById('distanceTriangle').style.display='block';
document.getElementById('bypoisTriangle').style.display='none';
}
else if(typeSort == '5'){
document.getElementById('bewertung').className='tab_subbox tab2';
document.getElementById('price').className='tab_subbox tab3';
document.getElementById('kategorie').className='tab_subbox tab4';
document.getElementById('distance').className='tab_subbox tab5';
document.getElementById('bypois').className='tab_subbox tab6 tabon';
document.getElementById('opodoTriangle').style.display='none';
document.getElementById('priceTriangle').style.display='none';
document.getElementById('reviewTriangle').style.display='none';
document.getElementById('distanceTriangle').style.display='none';
document.getElementById('bypoisTriangle').style.display='block';
}
</script>
答案 0 :(得分:3)
在JavaScript,Python和其他为核心数据结构提供literal notation的灵活语言中,我发现构建简单的数据结构非常方便,这些数据结构代表变化的部分,然后围绕结构构建逻辑。
var tabs = [
{id: 'bewertung', contentId: 'opodoTriangle'}
, {id: 'price', contentId: 'priceTriangle'}
, {id: 'kategorie', contentId: 'reviewTriangle'}
, {id: 'distance', contentId: 'distanceTriangle'}
, {id: 'bypois', contentId: 'bypoisTriangle'}
];
var activeIdx = parseInt(document.getElementById('sortTypeUp').value, 10) - 1;
for (var i = 0, l = tabs.length; i < l; i++) {
var tab = tabs[i]
, active = (i == activeIdx)
, tabEl = document.getElementById(tab.id)
, contentEl = document.getElementById(tab.contentId);
if (active) {
addClass(tabEl, 'tabon');
} else {
removeClass(tabEl, 'tabon');
}
contentEl.style.display = (active ? 'block' : 'none');
}
类管理实用程序方法(来自http://dean.edwards.name/IE7/caveats/ - 刚刚抓住我发现的第一个实现):
function addClass(element, className) {
if (!hasClass(element, className)) {
if (element.className) element.className += ' ' + className;
else element.className = className;
}
};
function removeClass(element, className) {
var regexp = new RegExp('(^|\\s)' + className + '(\\s|$)');
element.className = element.className.replace(regexp, '$2');
};
function hasClass(element, className) {
var regexp = new RegExp('(^|\\s)' + className + '(\\s|$)');
return regexp.test(element.className);
};
Bonus:这是一个简洁的简洁版本,它使用类型强制,逗号运算符,用于循环分配和退出逻辑,并作为第一类对象 - 仅举例说明! :)
var activeIdx = +document.getElementById('sortTypeUp').value - 1;
for (var i = 0, tab, active; active = (i == activeIdx), tab = tabs[i]; i++) {
(active ? addClass : removeClass)(document.getElementById(tab.id), 'tabon');
document.getElementById(tab.contentId).style.display =
(active ? 'block' : 'none');
}
答案 1 :(得分:2)
<script type="text/javascript">
var typeSort = document.getElementById('sortTypeUp').value;
document.getElementById('bewertung').className = 'tab_subbox tab2' + ((typeSort=='1') ? ' tabon' : '');
document.getElementById('price').className='tab_subbox tab3' + ((typeSort=='2') ? ' tabon' : '');
document.getElementById('kategorie').className='tab_subbox tab4' + ((typeSort=='3') ? ' tabon' : '');
document.getElementById('distance').className='tab_subbox tab5' + ((typeSort=='4') ? ' tabon' : '');
document.getElementById('bypois').className='tab_subbox tab6' + ((typeSort=='5') ? ' tabon' : '');
document.getElementById('opodoTriangle').style.display = ((typeSort=='1') ? 'block' : 'none');
document.getElementById('priceTriangle').style.display=((typeSort=='2') ? 'block' : 'none');
document.getElementById('reviewTriangle').style.display=((typeSort=='3') ? 'block' : 'none');
document.getElementById('distanceTriangle').style.display=((typeSort=='4') ? 'block' : 'none');
document.getElementById('bypoisTriangle').style.display=((typeSort=='5') ? 'block' : 'none');
</script>
答案 2 :(得分:2)
您可以将代码的公共部分放在函数中,如下所示:
function active(id, tab, typeSort, eq){
document.getElementById(id).className='tab_subbox '+tab+(typeSort==eq?' tabon':'');
}
function show(id, typeSort, eq){
document.getElementById(id).style.display=typeSort==eq?'block':'none';
}
var typeSort = parseInt(document.getElementById('sortTypeUp').value);
active('bewertung', 'tab2', typeSort, 1);
active('price', 'tab3', typeSort, 2);
active('kategorie', 'tab4', typeSort, 3);
active('distance', 'tab5', typeSort, 4);
active('bypois', 'tab6', typeSort, 5);
show('opodoTriangle', typeSort, 1);
show('priceTriangle', typeSort, 2);
show('reviewTriangle', typeSort, 3);
show('distanceTriangle', typeSort, 4);
show('bypoisTriangle', typeSort, 5);
答案 3 :(得分:0)
也许创建一个以两个数组作为参数的方法:一个数组包含要重置其类的元素的id,另一个数组包含相应的新样式。
function updateClasses(ids, classes) {
// implement me
}
只启动元素数组一次:
var ids=new Array("bewertung","price","kategorie", ...);
对于每一个案例:
if(typeSort == '1'){
var classes=new Array("tab_subbox tab2 tabon","tab_subbox tab3","tab_subbox tab4", ...);
updateClasses(ids, classes);
} else if (typeSort == '2') {
var classes = // some other values
updateClasses(ids, classes);
} // ...
修改强>
也像约翰所说的那样使用开关语句。
答案 4 :(得分:0)
将公共代码放在顶部,包括css类赋值 e.g。
document.getElementById('bewertung').className='tab_subbox tab2';
更可能是因为您将隐藏的对象标记为公共代码...将其置于顶部并仅标记可见的对象
使用case语句而不是Ifs,并使用Jquery来改善你的代码风格。
答案 5 :(得分:0)
var get = document.getElementById;
var elems = ['bewertung', 'price', 'kategorie', 'distance', 'bypois'];
var triangles = ['opodoTriangle', 'priceTriangle', 'reviewTriangle', 'distanceTriangle', 'bypoisTriangle'];
var typeSort = +get('sortTypeUp').value - 1;
elems.forEach(function(v) {
var elem = get(v);
elem.classList.remove('tabon');
});
triangles.forEach(function(v) {
var elem = get(v);
elem.style.display = 'none';
});
elems[typeSort].classList.add('tabon');
triangle[typeSort].style.display = 'block';
使用DOM3 / ES5。
使用数组并将typeSort
视为数组索引。
答案 6 :(得分:0)
typeSort = parseInt( document.getElementById('sortTypeUp').value );
s = ["bewertung", "price", "kategorie", "distance", "bypois"];
for(i=0;i<s.length;i++) {
e = document.getElementById(s[i]);
n = i + 2;
e.className = "tab_subbox tab" + n;
if(typeSort == (i+1)) {
e.className = e.className + " tabon";
}
}
s = ["opodo", "price", "review", "distance", "bypois"];
for(i=0;i<s.length;i++) {
e = document.getElementById( s[i] + "Triangle" );
e.style.display = 'none';
if(typeSort == (i+1)) {
e.style.display = 'block';
}
}