Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перезапись текста в div(диалог) (https://javascript.ru/forum/misc/55836-perezapis-teksta-v-div-dialog.html)

varName 16.05.2015 17:55

Перезапись текста в div(диалог)
 
Доброго времени суток,
столкнулся с необходимостью реализации системы коротких диалогов между 2 персонажами на дивах/спанах. Алгоритм следующий -

1) Есть 2 кнопки, одна актив(1), вторая скрытая(2).
2) После нажатия актив кнопки(1) выводится див с текстом(1), скрытая кнопка(2) переходит в активное состояние, 1я скрывается.
3) После нажатия актив кнопки(2) выводится див с текстом(2), первый див закрывается. Актив кнопки снова меняются.
4) После нажатия актив кнопки(1) текст в диве(1) должен заменяться на заданный(т.е. происходить обновление дива). Количество обновлений(т.е. реплик героев) должно задаваться, как и сам текст, в коде.

Пробовал заменять текст в дивах при помощи метода текст $('#item1').text('Новая Строка 2'); но нужного результата добиться не удалось :(

Само переключение между дивами как тут http://javascript.ru/forum/159088-post2.html

Подскажите, пожалуйста, способ для перезаписи текста в дивах/спанах, согласно описаному алгоритму, и переключение между активными кнопками. :help:

рони 16.05.2015 18:34

varName,
а когда реплики закончатся, тогда что?

varName 16.05.2015 18:41

Цитата:

Сообщение от рони (Сообщение 371164)
varName,
а когда реплики закончатся, тогда что?

Тогда скрываются обе кнопки (и дива с.о)

рони 16.05.2015 19:11

varName,
:-?
<!DOCTYPE html>
<html>
<head>
  <title></title>
<meta charset="utf-8">
<style type="text/css">
div.tratata, span.tratata{
  display: none;
}
div.tratata.active, span.tratata.active{
  display:  block;
}
span.tratata{
  cursor: pointer;
}
.tratata.first {
  background-color: #FF9900;
}
.tratata.last{
  background-color: #339900;
}

</style>
<script type="text/javascript">
window.onload = function() {
    var spans = document.querySelectorAll('span.tratata'), divs = document.querySelectorAll('div.tratata'), arr = ['один','два','три','четыре','пять'] ;
    var click = function (c) {
            var a = 1 - c ;
        return function () {
            this.classList.remove('active');
            divs[a].classList.remove('active');
            if(!arr.length) return;
            spans[a].classList.add('active');
            divs[c].classList.add('active');
            divs[c].innerHTML = arr.shift();
            }
    };
    spans[0].addEventListener("click", click(0), false);
    spans[1].addEventListener("click", click(1), false);
 }
</script>
</head>

<body>
<span class="tratata active">1</span>
<span class="tratata">2</span>
<div class="tratata first"></div>
<div class="tratata last"></div>
</body>
</html>

varName 16.05.2015 21:23

Цитата:

Сообщение от рони (Сообщение 371168)
varName,
:-?
<!DOCTYPE html>
<html>
<head>
  <title></title>
<meta charset="utf-8">
<style type="text/css">
div, span{
  display: none;
}
div.active, span.active{
  display:  block;
}
span{
  cursor: pointer;
}
.first {
  background-color: #FF9900;
}
.last{
  background-color: #339900;
}

</style>
<script type="text/javascript">
window.onload = function() {
    var spans = document.querySelectorAll('span'), divs = document.querySelectorAll('div'), arr = ['один','два','три','четыре','пять'] ;
    var click = function (c) {
            var a = 1 - c ;
        return function () {
            this.classList.remove('active');
            divs[a].classList.remove('active');
            if(!arr.length) return;
            spans[a].classList.add('active');
            divs[c].classList.add('active');
            divs[c].innerHTML = arr.shift();
            }
    };
    spans[0].addEventListener("click", click(0), false);
    spans[1].addEventListener("click", click(1), false);
 }
</script>
</head>

<body>
<span class="active">1</span>
<span class="">2</span>
<div class="first"></div>
<div class="last"></div>
</body>
</html>

Спасибо! А можно применять свойства не ко всем спанам и дивам на странице, а только к группе, участвующей в диалогах?

рони 16.05.2015 21:51

varName,
вы что-нибудь о классах в css или поиске элементов, читали?

рони 16.05.2015 21:55

varName,
смотрите пост 4 снова добавлен class tratata :( надеюсь элементов с таким классом у вас нет

varName 16.05.2015 23:58

Спасибо огромное, выручили!


Часовой пояс GMT +3, время: 13:53.