Как сделать вкладки на CSS без перезагрузки?

12
Z
На сайте с 19.01.2006
Offline
23
10376

Господа, подскажите, и киньте ссылку!!

Хочу сделать следующее:

Есть 3 таблицы на странице, хочу сделать так, чтобы можно было переключаться с одной на другую с помощью кнопок(ссылок).

Насколько я понимаю, это делается связкой css + js. Однако мне все попадаются варианты, где js-обработчик обрабатывает не контент, ссылки на внутренние страницы. А мне надо, чтобы контент брался из одного документа.

Спасайте!:eek:

СКОРПИОН
На сайте с 05.01.2006
Offline
120
#1

1. Каждую таблицу в отдельный слой.

<div id="tbl1">

Таблица 1

</div>

<div id="tbl2">

Таблица 2

</div>

<div id="tbl3">

Таблица 3

</div>

2. В таблице стилей можно прописать так:

#tbl1,#tbl2, #tbl3 {display: none; position: absolute; top: ??Px; left: ??Px;}

#tbl1 {display: block;}

3. Простейший JS:

function switch(numb)

{

document.getElementById('tbl1').style.display = 'none';

document.getElementById('tbl2').style.display = 'none';

document.getElementById('tbl3').style.display = 'none';

document.getElementById('tbl'+numb).style.display = 'block';

return false;

}

4. Вызов можно так:

<div onclick="switch(1);">Таблица 1</div>

<div onclick="switch(2);">Таблица 2</div>

<div onclick="switch(3);">Таблица 3</div>

З.Ы.

Это в простейшем виде, без навешивания всяких обработчиков и т.д.

• Контекстные ссылки с внутренних страниц навсегда (/ru/forum/370882) • Качественные сайты для заработка на контекстной рекламе и ссылках
Z
На сайте с 19.01.2006
Offline
23
#2

не получается.... Ошибку выдал.

zip index.zip
Shtogrin
На сайте с 02.11.2006
Offline
95
#3

Придумайте другое название для функции switch

www.shtogrin.com (http://www.shtogrin.com/). Канцтовары (http://www.invit.com.ua/). 1С Бухгалтерия (http://account.kiev.ua/).
КМ
На сайте с 08.03.2007
Offline
66
#4

Опишите задачу более подробнее.

Shtogrin
На сайте с 02.11.2006
Offline
95
#5

КиллерМЕН, так вроде все понятно и пример рабочий, за исключением зарезервированного слова switch

Z
На сайте с 19.01.2006
Offline
23
#6

СКОРПИОН, Shtogrin, заработало! Огромное спасибо за помощь!

Спасибо. Я просто не понял, что switch зарезервировано и искал, что же это за таинственная функция.

Работающий пример. Может кому пригодится:

[ATTACH]10373[/ATTACH]

zip last.zip
Shtogrin
На сайте с 02.11.2006
Offline
95
#7

zonner, сам принцип вы поняли, теперь можете посмотреть более сложные (дизайн табов и их размешение) примеры http://www.dynamicdrive.com/dynamicindex17/tabcontent.htm

Z
На сайте с 19.01.2006
Offline
23
#8

Это точно на примере этого обсуждения модифицировал 2 js: один управляет переключением картинок, второй табов в таблице.

Вопрос:

Почему 2 js-скрипта не хотят работать совместно? Функции пересекаются?

1:

onload = function() {

var e, i = 0;
while (e = document.getElementById('gallery00').getElementsByTagName ('DIV') [i++]) {
if (e.className == 'on00' || e.className == 'off00') {
e.onclick = function () {
var getEls = document.getElementsByTagName('DIV');
for (var z=0; z<getEls.length; z++) {
getEls[z].className=getEls[z].className.replace('show00', 'hide00');
getEls[z].className=getEls[z].className.replace('on00', 'off00');
}
this.className = 'on00';
var max = this.getAttribute('title');
document.getElementById(max).className = "show00";
}
}
}
}

2:

onload = function() {

var e, i = 0;
while (e = document.getElementById('gallery').getElementsByTagName ('B') [i++]) {
if (e.className == 'switch') {
e.onclick = function () {
var getEls = document.getElementById('gallery').getElementsByTagName('DIV');
for (var z=0; z<getEls.length; z++) {
getEls[z].className=getEls[z].className.replace('show', 'hide');
w=getEls[z].previousSibling;
while (w.nodeType!=1) {
w=w.previousSibling;
}
w.className=w.className.replace('switch over', 'switch');
w.className=w.className.replace('switch off', 'switch over');
}
this.className = this.className == 'switch' ? 'switch off' : 'switch';
x=this.nextSibling;
while (x.nodeType!=1) {
x=x.nextSibling;
}
x.className = this.className == 'switch off' ? 'show' : 'hide';
}
}
}
}

Взято здесь:

http://www.stunicholls.com/gallery/simply_more.html

T
На сайте с 11.07.2007
Offline
43
#9

проименуй вторую и поставь её вызов в первую, а то у тебя две на онлоад....

Z
На сайте с 19.01.2006
Offline
23
#10
Toster:
поставь её вызов в первую

не очень понял. Можно экзампл?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий