Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > [JS, Jquery] манипуляция элементами в таблице


Автор: gcc 8.4.2010, 09:49
я хотел бы изменить и построить массив с несколькими элементами в таблице, с начала таблицы и с конца таблицы... 

но в данном примере почему-то вся таблица начинает изменятся...
весь класс blog с td  изменяется на ''1"

хотя должно же только 5?


 
Код
  <tr> 
    <td>
    <table id="t_blog" border="1">
  <tr ><td>TD #0</td><td>TD #1</td><td class="blog">TD #2</td></tr>
  <tr ><td>TD #3</td><td>TD #4</td><td class="blog">TD #5</td></tr>
  <tr ><td>TD #6</td><td>TD #7</td><td class="blog">TD #8</td></tr>
  <tr ><td>TD #0</td><td>TD #1</td><td class="blog">TD #2</td></tr>
  <tr ><td>TD #3</td><td>TD #4</td><td class="blog">TD #5</td></tr>
  <tr ><td>TD #6</td><td>TD #7</td><td class="blog">TD #8</td></tr>
    <tr ><td>TD #0</td><td>TD #1</td><td class="blog">TD #2</td></tr>
  <tr ><td>TD #3</td><td>TD #4</td><td class="blog">TD #5</td></tr>
  <tr ><td>TD #6</td><td>TD #7</td><td class="blog">TD #8</td></tr>
    <tr ><td>TD #0</td><td>TD #1</td><td class="blog">TD #2</td></tr>
  <tr ><td>TD #3</td><td>TD #4</td><td class="blog">TD #5</td></tr>
  <tr ><td>TD #6</td><td>TD #7</td><td class="blog">TD #8</td></tr>
  
</table>
<script>

 var array = [];
 var tr = document.getElementById('t_blog').getElementsByTagName('tr');
  for (var i = 0; i < 5; i++) {
     
    // if ($(".blog:eq([i])").html()) {
    $(".blog:eq([i])").html( '1') ;
    
//    }
    array[i] = $(".blog:eq([i])").html();
    
  }
</script>

    </td>
    </tr>

    

если написать просто $(".blog:eq(5)").html( '1') ;  то 5(4) элемент по счету изменятеся и все работает...

но почему не хотят в цикле именно некоторые (первые 5 или последние 5) элементы изменятся?

как изменить 5 элементов (в классе class="blog") с конца или с начала таблицы?

Добавлено через 11 минут и 39 секунд
Код
 for (var i = 0; i < 5; i++) {

    $(".blog:eq("+i+")").html( '1') ;

    array[i] = $(".blog:eq("+i+")").html();
    
  }


зафтыкал, скобки лишниые и вот так вот надо было сделать "+i+"...

Автор: ksnk 8.4.2010, 11:39
а если еще немного поковырять документацию jQuery, можно было бы написать что-то такое
Код

   $(".blog").each(function(index){
       array[i] = $(this).html();
       if (index>5) return false;
  })

Автор: gcc 8.4.2010, 11:56
ksnk, но я это не понял...

а на что вы намекаете?

т.е. мне нужно взять посдлений td в каждом tr в таблице, как мне его взять? т.е. я назвал ему класс..
... в зависимости что в нем - построить массив и в зависимости что в конкретном td поменять ему значения

Автор: ksnk 8.4.2010, 19:08
gcc, Просто строковые селекторы - не самый быстрый способ работы с деревом в DOM'е. Особенно если они в цикле и конструируются на лету.

Хотя обычными методами добраться до 5 последних элементов не так просто как до 5-и первых...

Можно так: в принципе, $(".blog") - это уже массив, с которым можно работать почти как с настоящим массивом
юдутпер выдает его длинну, .eq(X) выдает DOM элемент с индексом X...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)