Jump to content

vvzone

Newbie
  • Posts

    11
  • Joined

  • Last visited

vvzone's Achievements

Explorer

Explorer (1/14)

0

Reputation

  1. Там чудовище. Большое. И изначально некоторые фичи, которые хочет заказчик (вроде подсветок и тп) не планировались. И каждый раз когда он захочет "чтоб здесь было синенькое, а там красненькое" перелопачивать исходную прогу - мне влом. Да, предварительно системный вывод не сторится, а выводится по мере выполнения проги. Вполне возможно, что и придется сесть за переписывание исходной проги, но пока я искал способ сделать "чтоб здесь было красненькое, а тут синенькое" минимальной кровью. А насчет выполнения функция и контекста, а как же call и apply? И потом, опять же, вы меня не убедили, что есть кардинальная разница между тем, чтобы определять ее местоположение в dom при исполнении ее по событию или просто по вызову. Ну хочет кто-то исполнять какую-то функцию по клику, но что теперь все через клики делать, если нужно к документу "пост-обработку" применить PS: В любом случае, спасибо...
  2. Потому что в php идет построчный вывод неких данных, и условие на перекрашивание начального заголовка исполняется в конце этого вывода. Найдете способ вернуться назад средствами php - напишите, буду знать Почему в онКлик исполнять функцию логично, а вне его не логично?
  3. Все нашел там небольшая ошибочка была два раза парент запрашивался. Собираюсь ее вызывать непосредственно. <script> function slovo(){ document.write('Hello world!'); } </script> ... html.... .... <script> slovo(); </script> И отлично вызывается, тока this работает почему-то только с щелчками мышью и прочей ерундой. А этого не может быть, потому, что не может быть никогда. Наверняка можно как-нибудь через call или apply контекст dom передать... Ладно, всем спасибо, я так понял, что оптимал переписать вывод для getElementsByClassName. Но если все таки кто нибудь узнает как можно передавать положение в DOM в функцию без событий типа onClick и тп - буду оч благодарен!
  4. Идея понятна, спасибо Но один вопрос остался тем же (а как все таки вызывать функцию в контексте 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. вроде? Красит всегда первую конструкцию...
  5. Не опять не катит. Как я уже писал выше раскрашивать первый вложенный див нужно только в той конструкии в которую вложен вызов paint(); А этот раскрасит все или до того места где произодет вызов.
  6. Окрашивание будет происходить на основании того есть ли в очередном <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 и прочей нечисти?
  7. Задача: Есть некий вывод: Он повторяется множество раз (неопределенное множество): Например, три раза: Для этого вывода определена функция раскраски первого вложенного дива: Те: Предполагается вызывать эту функцию из второго вложенного дива. То есть: Там где во втором вложенном диве есть конструкция вызова paint() - необходимо раскрасить первый вложенный див. Именно по этому поиск в don через parentNode. Так как конструкции повторяются неопределенное количество раз и они полностью одинаковы. Проблема: Не могу передать контекст this.
  8. Мне надо чтобы функция вызывалась всегда. Событие onclick мне совершенно не подходит. Вопрос именно в том и заключается, что вызов осуществляется не по событию. Работает, спасибо, но только в этом частном случае А если у меня идет вывод таких div парами несколько десятков? Не могу же я каждый раз переопределять функцию или имя им менять... По этому меня и интересует обьявить один раз и вызывать только в тех местах, куда в сгенериную страницу php будет вставлять конструкцию <script type="text/javascript">paint();</script>
  9. вызовы вида paint.call() тож результата не дают, где я допускаю ошибку?
  10. <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 в функицию передавался в схожем контексте?
  11. <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() - ничего не происходит?
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy