window.onload = function() { // хотя лучше повесить обработчик на DOMContentLoaded
var table = document.getElementById('tbl');
for(var i = 0; i < table.rows.length; i++) {
for(var c = 0; c < table.rows[i].cells.length; c++) {
(function(c) {
table.rows[i].cells[c].onclick = function() {
document.getElementById('input' + c).value = table.rows[i].cells[c].innerHTML;
}
})(c)
}
}
}
Таблице присвоишь id="tbl" а инпутам дашь id="input0" id="input1" id="input2" monolithed, вот что я имел в виду :) |
monolithed, тут вы меня уже немного не поняли.
Вот смотрите, имеем: <table border="1"> <tr><td>td4</td><td>td5</td><td>td6</td></tr> <tr><td>td7</td><td>td8</td><td>td9</td></tr> <tr><td>td7</td><td>td8</td><td>td9</td></tr> <tr><td>td7</td><td>td8</td><td>td9</td></tr> </table> <input type="text" value="" id="1" /><input type="text" value="" id="2" /><input type="text" value="" id="3" /> Нужно, что б при клике на к-л строке таблицы значение из каждой ячейки этой строки падали в соостветствующий инпут. Т.е. грубо говоря это будет выглядеть как <tr onclick="функция"> если я все правильно понимаю. Т.е. в конкретном примере, при щелчке на 1й строке значение td4 должно попасть в инпут id="1", значение td5 в id="2" и т.д. |
monolithed, смотрите, есть строка <tr> ... </tr>, нужно что б при клике на эту строку (ну т.е. на одну из ее ячеек <td>) скрипт "пробегал" по всем ячейкам этой строки и значение каждой ячейки (т.е. значения всех <td> строки) отправлял в отдельный input.
Получается: <table border="1"> <tr><td>1</td><td>2</td><td>3</td></tr> <tr><td>4</td><td>5</td><td>6</td></tr> <tr><td>7</td><td>8</td><td>9</td></tr> <tr><td>10</td><td>11</td><td>12</td></tr> </table> <input type="text" value="" id="1" /><input type="text" value="" id="2" /><input type="text" value="" id="3" /> Кликаем к примеру на <td>2</td> - у нас значение 1 падает в id="1", знчачение 2 в id="2", значение 3 в id="3". Кликаем на <td>9</td> например - значение 7 падает в id="1", знчачение 8 в id="2", значение 9 в id="3". Как то так :) |
lolka84, лови окончательный свой результат
window.onload = function() { // хотя лучше повесить обработчик на DOMContentLoaded
var table = document.getElementById('tbl');
for(var i = 0; i < table.rows.length; i++) {
(function(i) {
table.rows[i].onclick = function() {
for(var c = 0; c < table.rows[i].cells.length; c++) {
document.getElementById(c).value = table.rows[i].cells[c].innerHTML;
}
}
})(i);
}
}
|
<body>
<script type="text/javascript">
window.onload = function() { // хотя лучше повесить обработчик на DOMContentLoaded
var table = document.getElementById('tbl');
for(var i = 0; i < table.rows.length; i++) {
(function(i) {
table.rows[i].onclick = function() {
for(var c = 0; c < table.rows[i].cells.length; c++) {
document.getElementById(c).value = table.rows[i].cells[c].innerHTML;
}
}
})(i);
}
}
</script>
<table width="20%" border="1" id="tbl">
<tr>
<td>sdf</td>
<td>xvb</td>
<td>asd</td>
</tr>
<tr>
<td>bc</td>
<td>vbn</td>
<td>as</td>
</tr>
<tr>
<td>vcb</td>
<td> vnvbn</td>
<td>mnb</td>
</tr>
<tr>
<td>bnm</td>
<td>fghf;</td>
<td>ffghhf;</td>
</tr>
</table>
<input id="1" type="text" value="" /><input id="2" type="text" value="" /><input id="3" type="text" value="" />
</body>
В консоли ошибок: Uncaught exception: TypeError: Cannot convert 'document.getElementById(c)' to object Что не так делаю ? |
document.getElementById(c) замени на document.getElementById('inp' + c) а id у инпутов пропиши так id="inp0" id="inp1" и тд
|
Все ок, спасибо огромное :)
Завтра буду тестить по-полной ;) Сам устал бы делать. |
Добрый вечер!
Усложнил себе задачу, добавил в форму chekbox и select. Смысл такой: если в ячейке таблицы значение 1 - chekbox отмечен, если значение 0 - выключен. Напрягся, сделал, все ок, работает :) С select проблема - нечего не выходит :( В списке пункты, которые погружены из БД, нужно сделать, что б выбирался тот пункт option, который совпадает со значением из таблицы, т.е. дословно, который равен table.rows[i].cells[c].innerHTML. Что имеем:
<script type="text/javascript">
window.onload = function() {
var table = document.getElementById('trtb');
for(var i = 0; i < table.rows.length; i++) {
(function(i) {
table.rows[i].onclick = function() {
for(var c = 0; c < table.rows[i].cells.length; c++) {
if (document.getElementById('inp' + c).type=='checkbox') {
if (table.rows[i].cells[c].innerHTML == '1') {
document.getElementById('inp' + c).checked = true;
}
if (table.rows[i].cells[c].innerHTML == '0') {
document.getElementById('inp' + c).checked = false;
}
}
if (document.getElementById('inp' + c).type == 'select-one') {
ЧТО ТУТ ПИСАТЬ ?! :(
}
else {
document.getElementById('inp' + c).value = table.rows[i].cells[c].innerHTML;
}
}
}
})(i);
}
}
</script>
|
Можно в id ячеек закладывать информацию для select/chekbox. Например "td_2_3" - это для select id="sel2" ставит selectedIndex = 3. Тип того:
<table width="200" border="1">
<tr>
<td id="td_1">Пункт 1</td>
<td id="td_3">Пункт 3</td>
</tr>
</table>
<select>
<option selected="selected">Пункты</option>
<option>Пункт 1</option>
<option>Пункт 2</option>
<option>Пункт 3</option>
</select>
<script>
document.getElementsByTagName('table')[0].onclick = function(){
var e = arguments[0] || window.event, t = e.target || e.srcElement;
if(t.tagName.search(/td/i) == -1) return;
document.getElementsByTagName('select')[0].selectedIndex = t.id.match(/\d/)
}
</script>
|
Sweet, Ваше решение - то, что надо, но можно ли его прикрутить к моему скрипту, в отсек
if (document.getElementById('inp' + c).type == 'select-one') {
}
? |
| Часовой пояс GMT +3, время: 19:33. |