Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.03.2015, 01:27
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

Действия с DIV2 и DIV1 при onclick на DIV1
есть DIV1 - кнопка и DIV2 - блок, который надо показывать/скрывать + надо менять классы vk_comments_inactive, vk_comments_active для смены изображения кнопки

черновой код DIV1 onclick следующий:
<div id="vk_chat_button" class="vk_comments_inactive" onclick="toggle_visibility('vk_comments_wrap');$(this).removeClass('vk_comments_inactive').addClass('vk_comments_active');" >chat</div>


работающая функция, которая прячет/показывает DIV2, здесь все в порядке:
function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }


помогите в этот код правильно прописать смену классов vk_comments_inactive, vk_comments_active по toggle для DIV1, опять к ночь, опять начинаю тупить, не хватает примеров и ничего не получается.

Последний раз редактировалось alecto, 14.03.2015 в 01:30.
Ответить с цитированием
  #2 (permalink)  
Старый 14.03.2015, 02:17
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

нашел пример для второй части, со сменой классов
http://jsfiddle.net/toddmotto/6UwF3/

получилось так
<div id="vk_chat_button" class="vk_comments_inactive" onclick="toggle_visibility('vk_comments_wrap'); $(this).toggleClass(this, 'vk_comments_active');" ></div>


function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }


function toggleClass(elem, className) {
	var newClass = ' ' + elem.className.replace( /[\t\r\n]/g, " " ) + ' ';
    if (hasClass(elem, className)) {
        while (newClass.indexOf(" " + className + " ") >= 0 ) {
            newClass = newClass.replace( " " + className + " " , " " );
        }
        elem.className = newClass.replace(/^\s+|\s+$/g, '');
    } else {
        elem.className += ' ' + className;
    }
}


но, все равно не работает, постоянно меняет на неактивный класс.
помогите победить этот код.
Ответить с цитированием
  #3 (permalink)  
Старый 14.03.2015, 04:49
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

$(this) - это jQuery, .toggleClass() - ее метод изменяющий класс/классы, и синтаксис его такой.
Вы же по методу пытаетесь вызвать функцию, которая совсем не нужна. Подключили jQuery, значит используйте, выбросив и вот это onclick="toggle_visibility('vk_comments_wrap');.
Ответить с цитированием
  #4 (permalink)  
Старый 14.03.2015, 08:50
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

нет, jquery не получится использовать, он подключается позже.
потому все функции и сделаны в javascript.
с jquery все было бы проще для меня.
пробовал
onclick="toggle_visibility('vk_comments_wrap'); toggleClass(this, 'vk_comments_active');"
так тоже не работает.

Последний раз редактировалось alecto, 14.03.2015 в 08:56.
Ответить с цитированием
  #5 (permalink)  
Старый 14.03.2015, 09:16
Аспирант
Отправить личное сообщение для alecto Посмотреть профиль Найти все сообщения от alecto
 
Регистрация: 12.11.2014
Сообщений: 84

laimas, спасибо, натолкнули на решение.

onclick="toggle_visibility('vk_comments_wrap'); toggleClass(this);"


function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }


function toggleClass(div){
var className=div.getAttribute("class")
if(className=="vk_comments_active"){
div.className="vk_comments_inactive"
}
else{
div.className="vk_comments_active"
}
}

вот так вроде получилось

Последний раз редактировалось alecto, 14.03.2015 в 10:02.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onClick на button при нажатии Enter atech Events/DOM/Window 2 09.08.2012 16:48
Событие onClick при нажатии пункта меню Lex4e Общие вопросы Javascript 1 25.06.2010 18:31
Событие onClick avtor01 Events/DOM/Window 3 03.09.2009 18:01
Снятие затемнения с экрана при получении ответа от php срипта с помощью setInterval roma86 jQuery 0 16.08.2009 12:39
Действия при клике kefiads Ваши сайты и скрипты 5 18.06.2009 10:33