vvzone
Newbie-
Posts
11 -
Joined
-
Last visited
vvzone's Achievements
Explorer (1/14)
0
Reputation
-
Там чудовище. Большое. И изначально некоторые фичи, которые хочет заказчик (вроде подсветок и тп) не планировались. И каждый раз когда он захочет "чтоб здесь было синенькое, а там красненькое" перелопачивать исходную прогу - мне влом. Да, предварительно системный вывод не сторится, а выводится по мере выполнения проги. Вполне возможно, что и придется сесть за переписывание исходной проги, но пока я искал способ сделать "чтоб здесь было красненькое, а тут синенькое" минимальной кровью. А насчет выполнения функция и контекста, а как же call и apply? И потом, опять же, вы меня не убедили, что есть кардинальная разница между тем, чтобы определять ее местоположение в dom при исполнении ее по событию или просто по вызову. Ну хочет кто-то исполнять какую-то функцию по клику, но что теперь все через клики делать, если нужно к документу "пост-обработку" применить PS: В любом случае, спасибо...
-
Потому что в php идет построчный вывод неких данных, и условие на перекрашивание начального заголовка исполняется в конце этого вывода. Найдете способ вернуться назад средствами php - напишите, буду знать Почему в онКлик исполнять функцию логично, а вне его не логично?
-
Все нашел там небольшая ошибочка была два раза парент запрашивался. Собираюсь ее вызывать непосредственно. <script> function slovo(){ document.write('Hello world!'); } </script> ... html.... .... <script> slovo(); </script> И отлично вызывается, тока this работает почему-то только с щелчками мышью и прочей ерундой. А этого не может быть, потому, что не может быть никогда. Наверняка можно как-нибудь через call или apply контекст dom передать... Ладно, всем спасибо, я так понял, что оптимал переписать вывод для getElementsByClassName. Но если все таки кто нибудь узнает как можно передавать положение в DOM в функцию без событий типа onClick и тп - буду оч благодарен!
-
Идея понятна, спасибо Но один вопрос остался тем же (а как все таки вызывать функцию в контексте DOM, без событий onClick), а второй добавился: <html> <head> <script language="javascript" type="text/javascript"> function getElementsByClassName(oElm, strTagName, strClassName) { var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName); var arrReturnElements = new Array(); strClassName = strClassName.replace(/\-/g, "\\-"); var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); var oElement; for(var i=0; i<arrElements.length; i++) { oElement = arrElements[i]; if (oRegExp.test(oElement.className)) { arrReturnElements.push(oElement); } } return (arrReturnElements); } window.onload = function() { var divs = getElementsByClassName(document, 'div', 'get_red'); for (var i = 0; i < divs.length; i++) { divs[i].parentNode.parentNode.getElementsByTagName('div')[0].style.background = 'red'; } } </script> </head> <body> <div><h4>All</h4> <div> <h5>Sub all-1</h5> </div> <div> <h5>Sub all-2</h5> </div> </div> <div><h4>All</h4> <div> <h5>Sub all-1</h5> </div> <div> <h5>Sub all-2</h5> </div> </div> <div><h4>All</h4> <div> <h5>Sub all-1</h5> </div> <div class="get_red"> <h5>Sub all-2</h5> </div> </div> </body> </html> То есть: нужно раскрасить в конструкции где для второго дива есть класс "get_red". Выглядит все отлично, но на практике не работает Вернее красит почему то не для того элемента. Хотя parentNode относительно div. вроде? Красит всегда первую конструкцию...
-
Не опять не катит. Как я уже писал выше раскрашивать первый вложенный див нужно только в той конструкии в которую вложен вызов paint(); А этот раскрасит все или до того места где произодет вызов.
-
Окрашивание будет происходить на основании того есть ли в очередном <div><h4>All</h4> //Основной див <div><h5>Sub all-1</h5></div> // Первый вложенный див <div><h5>Sub all-2</h5></div> // Второй вложенный див </div> во втором диве вызов pain(); или нет. За то, что он там будет или нет отвечает уже другой скрипт - тут в дебри не нужно углубляться. Не будет окрашиваться: <div><h4>All</h4> //Основной див <div><h5>Sub all-1</h5></div> // Первый вложенный див <div><h5>Sub all-2</h5></div> // Второй вложенный див </div> Будет: <div><h4>All</h4> //Основной див <div><h5>Sub all-1</h5></div> // Первый вложенный див <div><h5>Sub all-2</h5><script>PAINT();</SCRIPT></div> // Второй вложенный див </div> Из второго дива нужно вызывать так-как paint() вставляется на основе содержимого второго дива. Предварительно обработать содержимое невозможно в данном случае. PS: А чо? PPS: Как я написал в самом первом посте мне нужна помощь по вызову функции с передачей контекста. Поиск по DOM и все остальное менять - тут не катит. Именно из второго дива вызов функции. Вопрос тот же... Как передать контекст не прибегая к onClick и прочей нечисти?
-
Задача: Есть некий вывод: Он повторяется множество раз (неопределенное множество): Например, три раза: Для этого вывода определена функция раскраски первого вложенного дива: Те: Предполагается вызывать эту функцию из второго вложенного дива. То есть: Там где во втором вложенном диве есть конструкция вызова paint() - необходимо раскрасить первый вложенный див. Именно по этому поиск в don через parentNode. Так как конструкции повторяются неопределенное количество раз и они полностью одинаковы. Проблема: Не могу передать контекст this.
-
Мне надо чтобы функция вызывалась всегда. Событие onclick мне совершенно не подходит. Вопрос именно в том и заключается, что вызов осуществляется не по событию. Работает, спасибо, но только в этом частном случае А если у меня идет вывод таких div парами несколько десятков? Не могу же я каждый раз переопределять функцию или имя им менять... По этому меня и интересует обьявить один раз и вызывать только в тех местах, куда в сгенериную страницу php будет вставлять конструкцию <script type="text/javascript">paint();</script>
-
вызовы вида paint.call() тож результата не дают, где я допускаю ошибку?
-
<html> <head> <script language="javascript" type="text/javascript"> function paint(o){ o.parentNode.parentNode.getElementsByTagName('div')[0].style.background='red'; } </script> </head> <body> <div><h4>All</h4> <div><h5>Sub all-1</h5> </div> <div><h5>Sub all-2</h5> <script type="text/javascript"> paint(this); </script> <a href="#" onClick="this.parentNode.parentNode.getElementsByTagName('div')[0].style.background='red';">click</a> </div> </div> </body> </html> Ага. Тогда я добавляю к вызову paint(this);, а в скрипте пытаюсь принять этот this в качестве перемнной (как выше) и это снова не работает... Что мне нужно сделать, чтобы у меня this в функицию передавался в схожем контексте?
-
<html> <head> <script language="javascript" type="text/javascript"> function paint(){ this.parentNode.parentNode.getElementsByTagName('div')[0].style.background='red'; } </script> </head> <body> <div><h4>All</h4> <div><h5>Sub all-1</h5> </div> <div><h5>Sub all-2</h5> <script type="text/javascript"> paint(); </script> <a href="#" onClick="this.parentNode.parentNode.getElementsByTagName('div')[0].style.background='red';">click</a> </div> </div> </body> </html> Собственно вопрос у меня: почему по ссылке и событию onClick все срабатывает как надо, а при вызове функции paint() - ничего не происходит?