Есть достаточно большая таблица, которая должна быть пригодна для ручного редактирования в Визивиг-редакторе системы CMS. При показе ее на сайте должна отображаться только самая левая колонка ПЛЮС еще одна колонка(группа колонок), зависящая от выбранного пользователем варианта.
Поискав на разных форумах нашел что-то подобное, что вроде бы должно работать одинаково в основных браузерах.
Адаптировал найденное под нашу задачу, проверяя работу под IE.
НО потом оказалось, что в Опере и FF скрипты работают, но несколько по другому.
ПОЧЕМУ - понять не могу.
Прошу помощи в исправлении ошибки.
Буду благодарен, если предложите идею и/или пример другой реализации данной задачи (например, через jQuery).
Во вложении HTML-файл с задействованными скриптами и примером, который прекрасно работает в IE8.
Реализовано через замену класса у ячеек таблицы. По классу в CSS определяется видимость/невидимость ячеек колонки.
При работе в Опере и FF скрипты отрабатывают, классы и видимость меняются, НО html-структура самой таблицы отрисовывается браузером по другому - видимые ячейки "вытягиваются" в одну колонку. В IE такого эффекта нет.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="ru"> <head> <title>ТЕСТ - Скрытие/Раскрытие колонок таблицы с помощью Javascript</title> <meta http-equiv="content-type" content="text/html;charset=windows-1251">
<div> <h2>Тест. Скрытие/Раскрытие колонок с помощью Javascript.</h2> <p> Нажмите на ссылку <b>Only</b> в разных колонках - Должна остаться самая левая <b>И</b> выбранная колонки, а остальные колонки должны скрыться.<br> Нажмите на ссылку <b>All</b> - Все ранее скрытые колонки должны отобразиться.<br> Текущая, т.е. ранее выбранная колонка, при этом отображается отличным от других колонок цветом, как и первая колонка. </p> </div>
<script type="text/javascript"> /* For functions getElementsByClassName, addClassName, and removeClassName Copyright Robert Nyman, http://www.robertnyman.com Free to use if this text is included */ function getElementsByClassName(className, tag, elm){ var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)"); var tag = tag || "*"; var elm = elm || document; var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag); var returnElements = []; var current; var length = elements.length; for(var i=0; i<length; i++){ current = elements[i]; if(testClass.test(current.className)){ returnElements.push(current); } } return returnElements; }
function removeClassName(elm, className){ var classToRemove = new RegExp(("(^|\\s)" + className + "(\\s|$)"), "i"); elm.className = elm.className.replace(classToRemove, "").replace(/^\s+|\s+$/g, ""); return elm.className; }
function activateThisColumn(column) { var table = document.getElementById('pricetable');
//remove the 'on' class from all other td's var tds = table.getElementsByTagName('td'); for (var m=0; m<tds.length; m++) { removeClassName(tds[m], 'on'); addClassName(tds[m], 'off'); }
//add the class 'on' to the selected td var newtds = getElementsByClassName(column, 'td', table); for (var i=0; i<newtds.length; i++) { removeClassName(newtds[i], 'off'); addClassName(newtds[i], 'on'); } //remove the class 'off' to the selected td var newtds = getElementsByClassName('side', 'td', table); for (var i=0; i<newtds.length; i++) { removeClassName(newtds[i], 'off'); } for (var i=0; i<newtds.length; i++) { addClassName(newtds[i], 'on'); } }
function displayAllColumn(column) { var table = document.getElementById('pricetable');
//remove the 'off' class from all other td's var tds = table.getElementsByTagName('td'); for (var m=0; m<tds.length; m++) { removeClassName(tds[m], 'off'); }
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Здравствуйте, подскажите какой тег использовать для увеличения значения, пример на картинке.
Вроде, про такой тег я слышала. Если есть тег прогресс бар, значит и такое должно быть.
Question
Avihr
Добрый день, пожалуйста, подскажите Новичку!
Задача.
Есть достаточно большая таблица, которая должна быть пригодна для ручного редактирования в Визивиг-редакторе системы CMS. При показе ее на сайте должна отображаться только самая левая колонка ПЛЮС еще одна колонка(группа колонок), зависящая от выбранного пользователем варианта.
Поискав на разных форумах нашел что-то подобное, что вроде бы должно работать одинаково в основных браузерах.
Адаптировал найденное под нашу задачу, проверяя работу под IE.
НО потом оказалось, что в Опере и FF скрипты работают, но несколько по другому.
ПОЧЕМУ - понять не могу.
Прошу помощи в исправлении ошибки.
Буду благодарен, если предложите идею и/или пример другой реализации данной задачи (например, через jQuery).
Во вложении HTML-файл с задействованными скриптами и примером, который прекрасно работает в IE8.
Реализовано через замену класса у ячеек таблицы. По классу в CSS определяется видимость/невидимость ячеек колонки.
При работе в Опере и FF скрипты отрабатывают, классы и видимость меняются, НО html-структура самой таблицы отрисовывается браузером по другому - видимые ячейки "вытягиваются" в одну колонку. В IE такого эффекта нет.
Link to comment
Share on other sites
4 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.