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 :: Версия для печати :: Вернуть переменную из события window.onload
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Вернуть переменную из события window.onload

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

1. zypikov - 14 Августа, 2012 - 23:10:37 - перейти к сообщению
Вообщем, массив инициалузуется в глобальном объекте window по событию onload.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. window.onload = function(){
  3.     //здесь чего-то делаем.. и допустим формируем массив mas
  4.       var mas = new Array()
  5.            
  6. }
  7.  


Как теперь сделать так чтобы этот массив был доступен функции
CODE (javascript):
скопировать код в буфер обмена
  1. someFunc(par1,par2,mas){}
. Эту функцию мне нужно вызывать не при событии window.onload, а допустим при клике мышкой на документе?
2. IllusionMH - 14 Августа, 2012 - 23:24:54 - перейти к сообщению
zypikov, имена в глобальном пространстве - свойства объекта window
CODE (javascript):
скопировать код в буфер обмена
  1. var mas;
  2. window.onload = function(){
  3.   //здесь чего-то делаем..
  4.   mas = [];
  5. }

или
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. window.onload = function(){
  3.    window.mas = [];
  4. }
3. zypikov - 17 Августа, 2012 - 00:33:35 - перейти к сообщению
да, забыл совсем, спасибо)

Вопрос не в эту тему но всеж таки

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var masssivTreeTog = document.getElementsByName('treeTog');
  3.         for(var i = 0; i<=masssivTreeTog.length-1; i++){
  4.            for (var k = 0; k<=masssivTreeTog[i].childNodes.length-1; k++){
  5.               if(masssivTreeTog[i].childNodes[k].id == 'rootContainer') {
  6.                var root = masssivTreeTog[i].childNodes[k]
  7.                var attr = root.getAttribute('status')
  8.                   if(attr == null) {
  9.                     var status = '0';
  10.                     if(root.firstChild.nodeType == 1){
  11.                       root.firstChild.setAttribute('status', status) }
  12.                       window.masCook[i] = '::' + i + '|' + status + '|'
  13.  
  14.                   }
  15.              }
  16.         }
  17.        }
  18.  

В самом внутренним if-условии, если его опустить, браузеры кроме ie ругаются, что атрибут нельзя установить текстовой ноде. Как мне получить сам элемент для установки атрибута?. Может объяснение глупое, но думаю суть понятна
4. IllusionMH - 17 Августа, 2012 - 01:08:19 - перейти к сообщению
zypikov, было бы проще на конкретном примере, или хотя бы дерево увидеть(со всеми переносами строк и пробелами)
Просто если в коде идет
CODE (html):
скопировать код в буфер обмена
  1. <div id="rootContainer"><!-- тут перенос строки -->
  2. <div class="rootChild">

то все браузеры кроме IE посчитают перенос строки как TEXT_NODE и нужно брать следующий (возможно используя nextSibling) элемент.
Возможно это решение, т.к. вопроса я до конца не понял.
5. zypikov - 18 Августа, 2012 - 18:47:34 - перейти к сообщению
Да все верно. Я схалтурил и записал html-текст одной строкой. Все заработало.
А вообще это обычное js-дерево

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div onclick="tree_toggle(arguments[0],this)" style="margin-left: 5px" name = "treeTog">
  3.   <ul class="Container" id = "rootContainer">
  4.     <li class="Node IsRoot ExpandClosed IsLast">
  5.     <div class="Expand"></div>
  6.     <div class="Content">Места</div>
  7.     <ul class="Container">
  8.       <li class="Node ExpandLeaf">
  9.         <div class="Expand"></div>
  10.         <div class="Content design"><a href = "%%_Url%%?act=house" id = "header3" class = ""><b>Базы отдыха</b></a></div>
  11.       </li>
  12.       <li class="Node ExpandLeaf">
  13.         <div class="Expand"></div>
  14.         <div class="Content design"><a href = "%%_Url%%?act=part_house" id = "header3" class = ""><b>Части</b></a></div>
  15.       </li>
  16.       <li class="Node ExpandLeaf sLast IsLast">
  17.         <div class="Expand"></div>
  18.         <div class="Content design"><a href = "%%_Url%%?act=ground_area" id = "header3" class = ""><b>Санатории</b></a></div>
  19.       </li>
  20.     </ul>
  21.   </li>
  22. </ul>
  23. </div>
  24.  


Это неисправленный вариант

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <div onclick="tree_toggle(arguments[0],this)" style="margin-left: 5px" name = "treeTog"><ul class="Container" id = "rootContainer"><li class="Node IsRoot ExpandClosed IsLast">
  3.     <div class="Expand"></div>
  4.     <div class="Content">Места</div>
  5.     <ul class="Container">
  6.  
  7.       <li class="Node ExpandLeaf">
  8.         <div class="Expand"></div>
  9.         <div class="Content design"><a href = "%%_Url%%?act=house" id = "header3" class = ""><b>Базы отдыха</b></a></div>
  10.       </li>
  11.       <li class="Node ExpandLeaf">
  12.         <div class="Expand"></div>
  13.         <div class="Content design"><a href = "%%_Url%%?act=part_house" id = "header3" class = ""><b>Части</b></a></div>
  14.       </li>
  15.       <li class="Node ExpandLeaf sLast IsLast">
  16.         <div class="Expand"></div>
  17.         <div class="Content design"><a href = "%%_Url%%?act=ground_area" id = "header3" class = ""><b>Санатории</b></a></div>
  18.       </li>
  19.     </ul>
  20.   </li>
  21. </ul>
  22. </div>
  23.  


Это исправленный

 

Powered by ExBB FM 1.0 RC1