2013-10-27 4 views
0

Допустим у меня есть такой HTML таблицы:Заливка HTML таблица

<table> 
    <tr> 
     <td>16</td> 
     <td>3</td> 
     <td>2</td> 
     <td>13</td> 
    </tr> 
    <tr> 
     <td>5</td> 
     <td>10</td> 
     <td>11</td> 
     <td>8</td> 
    </tr> 
    <tr> 
     <td>9</td> 
     <td>6</td> 
     <td>7</td> 
     <td>12</td> 
    </tr> 
    <tr> 
     <td>4</td> 
     <td>15</td> 
     <td>14</td> 
     <td>1</td> 
    </tr> 
</table> 

и имеют такую ​​строку: I and my dog)...

как я могу сделать, что яваскрипта с библиотекой JQuery перебирает через мою строку, и добавить эту строку символы в мою таблицу html, так что первая буква I переходит в td, где td содержит 1 номер, пробел переходит ко второму, a переходит к td с 3 и т. д., я новичок в js, но должен сделать это, как я могу это сделать это?

Как выполнить итерацию по строке и добавить письмо к td с равным числом?

+0

Вы должны показать нам свои усилия до сих пор, чтобы дать вам указатель. В основном вам нужно выбрать все элементы '$ ('td')', а затем использовать '.each' для' do stuff' – raam86

ответ

1

Во-первых, перебирать каждый символ строки:

for (var i=0, len=str.length; i<len; i++) { 
    var char = str.charAt(i); 

Затем найдите td с соответствующим номером:

$("td:contains(" + (i+1) + ")", $table).text(char); 

Где $table ваша таблица, например var $table = $("table") вне цикла.

Полный код:

→ Working jsFiddle

var $table = $("table"); 
var str = "I and my dog"; 

for (var i=0, len=str.length; i<len; i++) { 
    var char = str.charAt(i); 
    $("td", $table).filter(function() { 
    return $(this).text() == (i+1); 
    }).text(char); 
} 

Это полностью не работает, потому что: содержит (1) также соответствует 16. Я буду исследовать.

+0

нормально, просто дать совет, как собирать, то эту новую таблицу на новую строку, каждый из тра, после тра, например я \t \t \t I d \t I \t I \t у и т.д., а также как пространство в изменении строки косую черту? –

+0

также вы не добавили код в номер в таблице, он его заменил –

+0

@ValdisAzamaris Я не совсем понимаю ваше первое предложение. Вы хотите построить новую строку из каждой строки и ячейки? Вы можете легко заменить пробелы с помощью слэшей, используя 'str.replace (/ /,"/");'. (Я обновил ответ.) – ComFreek

0

Попробуйте это:

var data = "I and my dog)..." 

$("td").each(function(index){ 
    $(this).text(data[index]) 
}); 
+0

Я думаю, вы неправильно поняли вопрос. Это перечисляет все TD, а затем вставляет символы, поэтому первый TD получит присвоенный «I». Это неправильно, поскольку первый TD в DOM * * не содержит число «1». – ComFreek

+1

@ComFreek Yup, вы правы, извините. Я думаю, что ответ Blue Skies правильный. – pax162

1

Я собираюсь перейти на чистый javascript here.

var str = 'I and my dog)..', // test string 
    // get list of td elements 
    td = document.getElementsByTagName('td'), 
    i = 0, 
    l = td.length; 

// iterate thru each <td> element 
for (; i < l; i++) { 
    // save the number in the current <td> 
    var num = parseFloat(td[i].innerText); 
    // fill the current <td> with the matching string index; 
    td[i].innerHTML = num + (str[--num] || ''); 
// (str[--num] || '') this will catch undefined string index 
} 
+0

хорошо, спасибо –

+0

Возможно, я неправильно понял OP (@ValdisAzamaris), но я думал, что это должно быть как в моей [скрипке] (http://jsfiddle.net/UNmR5/): перечислить строку, назначить символ в положение * i * в TD с содержимым * i *. – ComFreek

+0

да, через плохой js - хорошее решение, не удаляйте его, но я хочу сначала увидеть с помощью jQuery) –

Смежные вопросы