Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос по DOM
 
 автор: amigo63   (16.01.2009 в 14:16)   письмо автору
 
 

Всем доброго времени суток!
Вопрос такой: есть ряд однотипных элементов

<span id="b1" onclick="chbox(this.id)"><img src="../graphic/blue.gif"><input type="hidden" name="brands[1]" value="0">text</span><br>
<span id="b2" onclick="chbox(this.id)"><img src="../graphic/blue.gif"><input type="hidden" name="brands[2]" value="0">text</span><br>
и т. д.

реально ли без ввода дополнительных ID и событий изменить функцией chbox()
парамтры src картинки и value поля?

  Ответить  
 
 автор: mikha   (16.01.2009 в 17:15)   письмо автору
 
   для: amigo63   (16.01.2009 в 14:16)
 

<html>
<head></head>
<body>
<script type="text/javascript" language="javascript">
function chbox(id_){
    var obj = document.getElementById(id_);
    for(var i=0, len = obj.childNodes.length; i < len; i++){
        if(obj.childNodes[i].nodeName == 'IMG') obj.childNodes[i].src = '../img/folderopen.gif';
        if(obj.childNodes[i].nodeName == 'INPUT') obj.childNodes[i].value = 'test';
    }
}
</script>
<span id="b1" onclick="chbox(this.id)"><img src="../img/folder.gif">
<input name="brands[1]" type="text" value="0">
text</span><br>
<span id="b2" onclick="chbox(this.id)"><img src="../img/folder.gif">
<input name="brands[2]" type="text" value="0">
text</span><br>
</body>
</html>

  Ответить  
 
 автор: amigo63   (16.01.2009 в 17:34)   письмо автору
 
   для: mikha   (16.01.2009 в 17:15)
 

Спасибо большущее, работает! Как я понимаю, obj.childNodes[i] - это будет что-то вроде скалярного массива тэгов внутри obj, а obj.childNodes.length - это размер такого массива?

  Ответить  
 
 автор: mikha   (16.01.2009 в 18:05)   письмо автору
 
   для: amigo63   (16.01.2009 в 17:34)
 

Попроще спросите, сам только изучать начал.
Документации, на русском почти нет, в английском не силён. По книжкам обламываюсь изучать, предпочитаю мануалы.
Но в принципе ничего сложного.
Вот,
_http://javascript.ru/php
_http://politeraser.ru/dom/dom_nodelist.htm
_http://javascript.ru/start/dom
посмотрите, недавно попалось.

  Ответить  
 
 автор: amigo63   (16.01.2009 в 18:10)   письмо автору
 
   для: mikha   (16.01.2009 в 18:05)
 

Еще раз спасибо:) пойду почитаю;)

  Ответить  
 
 автор: amigo63   (16.01.2009 в 18:03)   письмо автору
 
   для: mikha   (16.01.2009 в 17:15)
 

Вот так:
        if(obj.childNodes[i].nodeName == 'IMG')
        {
        if(obj.childNodes[i].src=='../graphic/blue2.gif'){
        obj.childNodes[i].src = '../graphic/blue.gif'; 
        }else{
        obj.childNodes[i].src = '../graphic/blue2.gif'}
        }


почему-то не меняет blue на blue2, хотя вроде все логично?

  Ответить  
 
 автор: mikha   (16.01.2009 в 18:10)   письмо автору
 
   для: amigo63   (16.01.2009 в 18:03)
 

А вы сделайте alert(obj.childNodes[i].src);
Сам на днях с этим столкнулся)))

  Ответить  
 
 автор: amigo63   (16.01.2009 в 18:20)   письмо автору
 
   для: mikha   (16.01.2009 в 18:10)
 

Ну я сделал. Выводит-то все правильно... Почему-то...

  Ответить  
 
 автор: mikha   (16.01.2009 в 18:31)   письмо автору
 
   для: amigo63   (16.01.2009 в 18:20)
 

Вы как скрипт проверяете?
Я под Денвером и у меня выводит полный путь, http://test15.ru/img/folder.gif, а не ../img/folder.gif
Естественно что http://test15.ru/img/folder.gif никогда не будет равно ../img/folder.gif

  Ответить  
 
 автор: amigo63   (16.01.2009 в 18:39)   письмо автору
 
   для: mikha   (16.01.2009 в 18:31)
 

Ух блин, точно!!! Странно, почему он именно так подменяет... Еще и путь обрабатывает

  Ответить  
 
 автор: mikha   (16.01.2009 в 19:21)   письмо автору
 
   для: amigo63   (16.01.2009 в 18:39)
 

Сюрпрайз)))
<html>
<head></head>
<body>
<script type="text/javascript" language="javascript">
function chbox(id_){
    var obj = document.getElementById(id_).getElementsByTagName('span');
    for(var j = 0, len_1 = obj.length; j < len_1; j++){
        obj[j].onclick = function(){
            var obj_span = this.childNodes;
            for(var i=0, len = obj_span.length; i < len; i++){
                if(obj_span[i].nodeName == 'IMG'){
                    if(obj_span[i].src == 'http://test15.ru/img/folder.gif'){
                        obj_span[i].src = '../img/folderopen.gif';
                    }else{
                        obj_span[i].src = '../img/folder.gif';
                    }
                }
                if(obj_span[i].nodeName == 'INPUT') obj_span[i].value = 'test';
            }
        }
    }
}
</script>
<span id="span_id" onMouseOver="chbox(this.id);"><span><img src="../img/folder.gif">
<input name="brands[1]" type="text" value="0">
text</span><br>
<span><img src="../img/folder.gif">
<input name="brands[2]" type="text" value="0">
text</span><br>
.................</span>
</body>
</html>

Только имена для переменных поменяй, после двух суток работы голова не варит что то придумывать..

  Ответить  
 
 автор: mikha   (16.01.2009 в 18:36)   письмо автору
 
   для: amigo63   (16.01.2009 в 18:20)
 

Только что проверил, работает.
function chbox(id_){
  var obj = document.getElementById(id_);
  for(var i=0, len = obj.childNodes.length; i < len; i++){
    if(obj.childNodes[i].nodeName == 'IMG'){
      //obj.childNodes[i].src = '../img/folderopen.gif';
      //alert(obj.childNodes[i].src);
      if(obj.childNodes[i].src == 'http://test15.ru/img/folder.gif'){
        obj.childNodes[i].src = '../img/folderopen.gif';
      }else{
        obj.childNodes[i].src = '../img/folder.gif';
      }
    }
    if(obj.childNodes[i].nodeName == 'INPUT') obj.childNodes[i].value = 'test';
  }
}

  Ответить  
 
 автор: amigo63   (16.01.2009 в 19:34)   письмо автору
 
   для: mikha   (16.01.2009 в 18:36)
 

Все, получилось, передаю абсолютный путь в РНР) Очень благодарен за помощь:)

  Ответить  
 
 автор: mikha   (16.01.2009 в 19:36)   письмо автору
 
   для: amigo63   (16.01.2009 в 19:34)
 

Выше посмотри.. не надо никаких id, точнее говоря только одно)))

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования