Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: detach
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » detach

Страниц (1): [1]
 

1. Арикус - 11 Августа, 2016 - 03:48:02 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <div class="right"><a id="sver1" class="btn btn-medium btn-blue">Свернуть</a></div>
  2. <div id="outerBlock1"><div id="innerBlock1">
  3. ...
  4. </div></div>

CODE (javascript):
скопировать код в буфер обмена
  1. // Свёртывание 1
  2. $('#sver1').on("click", function(event){
  3.         if ($(this).innerHTML == "Свернуть")
  4.         {$(this).innerHTML = 'Развернуть';
  5.         saveBlock1 = $('#innerBlock1').detach();}
  6.                 else
  7.                 {$(this).innerHTML = 'Свернуть';
  8.                 saveBlock1.appendTo('#outerBlock1');}
  9. });

Скрипт не работает. Консоль выдаёт ошибку (предпоследняя строчка в этом куске):
ReferenceError: saveBlock1 is not defined
Иначе говоря, detach не удалил и не записал содержимое блока.
2. Fart - 11 Августа, 2016 - 05:43:30 - перейти к сообщению
CODE (javascript):
скопировать код в буфер обмена
  1. <script>
  2. var saveBlock1;
  3. $('#sver1').on("click", function(event){
  4.         if ($(this).html() == "Свернуть"){
  5.                 $(this).html('Развернуть');
  6.                 saveBlock1 = $('#innerBlock1').detach();
  7.         }
  8.         else{
  9.                 $(this).html('Свернуть');
  10.                 saveBlock1.appendTo('#outerBlock1');
  11.                 saveBlock1 = null;
  12.         }
  13. });
  14. </script>
3. IllusionMH - 11 Августа, 2016 - 12:44:39 - перейти к сообщению
Арикус, у вас присвоение и использоване в разных ветках IF.
Сразу сохраняйте ссылку на объек в переменную (в функции или в замыкании если он не меняется), а потом уже работайте с ней.

И если объявляете переменную, то используйте var иначе создается глобальная переменная.

Fart, уже лучше, но не поможет если сначала выполнится else ветка. Будет что-то вроде "cannot get method appendTo of undefined"
4. Fart - 11 Августа, 2016 - 14:33:48 - перейти к сообщению
IllusionMH это само собой. Я исправил его код до исправления ошибок, но логическую цепочку ему доделывать самому. Может этой конструкции будет достаточно. Но что касается else то тут дорабатывать нужно. Я не писал основной алгоритм, не мне отвечать за последствия. К тому же не было задачи поставленно дописать.

 

Powered by ExBB FM 1.0 RC1