Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.09.2010, 16:09
Кандидат Javascript-наук
Отправить личное сообщение для Jurasmi Посмотреть профиль Найти все сообщения от Jurasmi
 
Регистрация: 25.11.2008
Сообщений: 115

Запомнить исходное состояние до клика.
Есть кнопка (на самом деле их много)
<div class="allDomains minimized">все 45шт</div>

на ней висит обработчик события "click":
el.onclick = function(){
	if(this.className.indexOf("minimized") != -1){
		this.firstChild.nodeValue = 'свернуть обратно';
		this.className = this.className.replace("minimized", 'expanded');
	}
	else if(this.className.indexOf("expanded") != -1){
		this.firstChild.nodeValue = 'то, что было тут до клика';
		this.className = this.className.replace("expanded", 'minimized');
	}
}

Обработчик меняет состояние кнопки.

Господа, какой есть стандартный-правильный способ запомнить текстовый узел до "первого" клика и вернуть его при втором клике (на ту же кнопку)?

Можно ли запоминать этот узел в переменной javascript, а не использовать для хранения информации HTML элементы?

Последний раз редактировалось Jurasmi, 22.09.2010 в 16:44. Причина: уточнил вопрос
Ответить с цитированием
  #2 (permalink)  
Старый 22.09.2010, 16:24
Кандидат Javascript-наук
Отправить личное сообщение для Jurasmi Посмотреть профиль Найти все сообщения от Jurasmi
 
Регистрация: 25.11.2008
Сообщений: 115

Как и где "это" хранить?
Ответить с цитированием
  #3 (permalink)  
Старый 22.09.2010, 16:36
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Jurasmi
Можно ли запоминать этот узел в переменной javascript, а не использовать для хранения информации HTML элементы?
Нужно А можно поподробнее? Покажи как выглядет кнопка
Ответить с цитированием
  #4 (permalink)  
Старый 22.09.2010, 16:39
Кандидат Javascript-наук
Отправить личное сообщение для Jurasmi Посмотреть профиль Найти все сообщения от Jurasmi
 
Регистрация: 25.11.2008
Сообщений: 115

Сообщение от Sweet Посмотреть сообщение
Нужно А можно поподробнее? Покажи как выглядет кнопка
<div class="allDomains minimized">все 45шт</div>

например
Ответить с цитированием
  #5 (permalink)  
Старый 22.09.2010, 17:02
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Jurasmi
Обработчик меняет состояние кнопки.
А это что значит? Плохо понял, что хочешь, но вот код, посмотри, может поможет:
<div onclick="changeMe(this)"><span id="first">First</span> text</div>
<script>
var storage
function changeMe(div){
  var newSpan = document.createElement('span')
  storage = div.firstChild
  if(storage.id=='first'){
    newSpan.id = 'second'
    newSpan.innerHTML = 'Second'
  }else{
    newSpan.id = 'first'
    newSpan.innerHTML = 'First'
  }
  div.insertBefore(newSpan, storage)
  div.removeChild(storage)
}
</script>


UPD: До меня дошло, что тебе нужно
<div id="allDomains" class="minimized">все 45шт</div>
<div id="allSomething" class="minimized">все 139шт</div>
<script>
var storage = {},
divs = document.getElementsByTagName('div')

function toggle(){
  if(this.className == 'minimized'){
    if(!storage[this.id]) storage[this.id] = this.innerHTML
    this.innerHTML = 'свернуть обратно'
    this.className = 'expanded'
  }else{
    this.innerHTML = storage[this.id]
    this.className = 'minimized'
  }
}

for(var i=0; i<divs.length; i++) divs[i].onclick = toggle
</script>

Последний раз редактировалось Sweet, 22.09.2010 в 20:09. Причина: Понял ТС
Ответить с цитированием
  #6 (permalink)  
Старый 24.09.2010, 10:47
Кандидат Javascript-наук
Отправить личное сообщение для Jurasmi Посмотреть профиль Найти все сообщения от Jurasmi
 
Регистрация: 25.11.2008
Сообщений: 115

Решение было найдено (коллеги помогли):
el.onclick = function(){
    if(this.className.indexOf("minimized") != -1){
        this.originalText = this.firstChild.nodeValue; //store original
        this.firstChild.nodeValue = 'turn back';       //change it
        this.className = this.className.replace("minimized", 'expanded');
    }
    else if(this.className.indexOf("expanded") != -1){
        this.firstChild.nodeValue = this.originalText; //restore it
        this.className = this.className.replace("expanded", 'minimized');
    }
}

а вот так оно работает:
http://jsfiddle.net/nick_craver/KrFuX/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение координат клика мыши uonax Events/DOM/Window 3 20.06.2010 09:32
Состояние загрузки, на основе фрейм nemo Общие вопросы Javascript 2 09.12.2009 13:23
Кнопочка ЗАПОМНИТЬ Hazard Элементы интерфейса 4 05.10.2009 10:39