Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 1
Регистрация: 23.05.2010
Сообщений: 17

Onclik на tr

30.10.2010, 17:30. Показов 1223. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вот такой код , подскажите что мне надо написать в скрипте чтобы при событии onclick на tr отмечался соответсвующий checkbox
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>table</title>
  <style type="text/css">
   table tr {background-color:#d6d6f9;}
   tr:hover {background-color: #9092EC;}
  </style>
  <script type="text/javascript">
  function checked() {
    
    }
  </script>
</head>
<body>
  <table width="100%" cellspacing="0" border="1">
    <tr>
        <td><input name="neft" type="checkbox" value="1" id="neft" /> Нефть</td>
    <tr/>
    <tr>
        <td><input name="zoloto" type="checkbox" value="2" id="zoloto" /> Золото</td>
    <tr/>
    <tr>
        <td><input name="drevesina" type="checkbox" value="3" id="drevesina" /> Древесина</td>
    <tr/>    
   <tr onclick="checked">
    <td>Нефть</td>
   </tr>
   <tr>
    <td>Золото</td>
   </tr>
   <tr>
    <td>Древесина</td>
   </tr>
  </table>
</body>
</html>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2010, 17:30
Ответы с готовыми решениями:

Onclik в JS
Всем привет! Народ такая проблема: есть страница index.php мне надо по нажатию на кнопку вызвать страницу page1.html не используя форм...

Массив картинок. Onclik не работает
У меня есть масив из картинок разбросанных по форме. Нужно определить по какой картинке я кликнул

Что лучше делегирование или onclik на каждый элемент? - в плане производительственности
Собственно кто в курсе? Например в случае когда требуется защита от считывания спам-ботами адреса email на сайте. Лучше на body...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
30.10.2010, 18:45
Объясните поподробнее:
при клике на каком td какой чекбокс должен отметиться?
1
1 / 1 / 1
Регистрация: 23.05.2010
Сообщений: 17
30.10.2010, 18:50  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
Объясните поподробнее:
при клике на каком td какой чекбокс должен отметиться?
вот у меня будет допусти 200 tr c различными именами тут их сейчас три золото древесина и нефть
и при нажатии на золото отмечается чек бокс с пометкой золото

Добавлено через 2 минуты
Наверное надо указать какой то идентификатор для td нефть ,чтобы чек бокс мог отметится но как реализовать это на яве не имею представления
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
30.10.2010, 18:57
Просто сейчас у вас таблица содержит три строки с чекбоксами, после которых идут строки, которых, как вы сказали, может быть несколько сотен...

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

Можно предложить несколько вариантов. Один из них - указывать индекс чекбокса, который нужно отметить:
JavaScript
1
2
3
4
5
6
7
8
    function check(i) {
        var checkboxes = [
            document.getElementById('neft'),
            document.getElementById('zoloto'),
            document.getElementById('drevesina')
        ];
        checkboxes[i].checked = true;
    }
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  <table width="100%" cellspacing="0" border="1">
    <tr>
        <td><input name="neft" type="checkbox" value="1" id="neft" /> Нефть</td>
    <tr/>
    <tr>
        <td><input name="zoloto" type="checkbox" value="2" id="zoloto" /> Золото</td>
    <tr/>
    <tr>
        <td><input name="drevesina" type="checkbox" value="3" id="drevesina" /> Древесина</td>
    <tr/>    
   <tr>
    <td onclick="check(0)">Нефть</td>
   </tr>
   <tr>
    <td onclick="check(1)">Золото</td>
   </tr>
   <tr>
    <td onclick="check(2)">Древесина</td>
   </tr>
  </table>
1
1 / 1 / 1
Регистрация: 23.05.2010
Сообщений: 17
30.10.2010, 19:26  [ТС]
Спасибо так и хотел, и еще последний вопрос! сейчас при наведении на нефть она подсвечивается другим цветом, а каким образом можно сделать , что если отмечен чекбокс нефть то строка с нефтью не будет подсвечиваться?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
30.10.2010, 19:38
Цитата Сообщение от Xander84 Посмотреть сообщение
каким образом можно сделать , что если отмечен чекбокс нефть то строка с нефтью не будет подсвечиваться?
Стиль дополняем:
CSS
1
2
   table tr, tr.checked:hover {background-color:#d6d6f9;}
   tr:hover {background-color: #9092EC;}
Функцию изменяем:
JavaScript
1
2
3
4
5
6
7
8
9
    function check(i, td) {
        var checkboxes = [
            document.getElementById('neft'),
            document.getElementById('zoloto'),
            document.getElementById('drevesina')
        ];
        checkboxes[i].checked = true;
        td.parentNode.className = 'checked';
    }
И в вызовах добавляем параметр this:
HTML5
1
2
3
4
5
6
7
8
9
   <tr>
    <td onclick="check(0, this)">Нефть</td>
   </tr>
   <tr>
    <td onclick="check(1, this)">Золото</td>
   </tr>
   <tr>
    <td onclick="check(2, this)">Древесина</td>
   </tr>
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
30.10.2010, 19:43
По поводу первой проблемы я бы предложил такой вариант:
HTML5
1
<tr onclick="choose(this)"><td><input type="checkbox"></td></tr>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function choose(element) {
    var childs=element.childNodes
    for (var i=0, L=childs.length; i<L; i++) {
        if (typeof childs[i] != "undefined") {
            if (childs[i].tagName=="TD") {
                childs=childs[i].childNodes
                for (var i=0, L=childs.length; i<L; i++) {
                    if (typeof childs[i] != "undefined") {
                        if (childs[i].tagName=="INPUT") {
                            if (childs[i].checked==false) {
                                childs[i].checked=true
                            } else {
                                childs[i].checked=false
                            }
                            break
                        }
                    }
                }
                break
            }
        }
    }
}
и ненужно никаких лишних id.

По поводу второго - функция нужна похожая.
HTML5
1
<tr onmouseover="hover(this)"><td><input type="checkbox"></td></tr>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function hover(element) {
    var childs=element.childNodes
    for (var i=0, L=childs.length; i<L; i++) {
        if (typeof childs[i] != "undefined") {
            if (childs[i].tagName=="TD") {
                childs=childs[i].childNodes
                for (var i=0, L=childs.length; i<L; i++) {
                    if (typeof childs[i] != "undefined") {
                        if (childs[i].tagName=="INPUT") {
                            if (childs[i].checked==false) {
                                element.style.backgroundColor="blue"
                            }
                            break
                        }
                    }
                }
                break
            }
        }
    }
}
0
1 / 1 / 1
Регистрация: 23.05.2010
Сообщений: 17
31.10.2010, 01:24  [ТС]
а как можно сделать чтобы при повторном нажатии галочка снималась?

JavaScript
1
2
3
4
5
6
7
8
9
    function check(i, td) {
        var checkboxes = [
            document.getElementById('neft'),
            document.getElementById('zoloto'),
            document.getElementById('drevesina')
        ];
        checkboxes[i].checked = true;
        td.parentNode.className = 'checked';
    }
и цвет возвращался в исходное положение!
0
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
31.10.2010, 08:17
Xander84, мой код это делает.

Добавлено через 4 минуты
Вот скрипт:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    function choose(element) {
        var childs=element.childNodes
        for (var i=0, L=childs.length; i<L; i++) {
            if (typeof childs[i] != "undefined") {
                if (childs[i].tagName=="TD") {
                    childs=childs[i].childNodes
                    for (var i=0, L=childs.length; i<L; i++) {
                        if (typeof childs[i] != "undefined") {
                            if (childs[i].tagName=="INPUT") {
                                if (childs[i].checked==false) {
                                    childs[i].checked=true
                                } else {
                                    childs[i].checked=false
                                }
                                break
                            }
                        }
                    }
                    break
                }
            }
        }
    }
    function hover(element) {
        var childs=element.childNodes
        for (var i=0, L=childs.length; i<L; i++) {
            if (typeof childs[i] != "undefined") {
                if (childs[i].tagName=="TD") {
                        childs=childs[i].childNodes
                    for (var i=0, L=childs.length; i<L; i++) {
                        if (typeof childs[i] != "undefined") {
                            if (childs[i].tagName=="INPUT") {
                                if (childs[i].checked==false) {
                                    element.style.backgroundColor="blue"
                                }
                                break
                            }
                        }
                    }
                    break
                }
            }
        }
    }
Вот HTML:
HTML5
1
2
3
<table width="100%">
<tr onclick="choose(this)" onmouseover="hover(this)" onmouseout="this.style.backgroundColor='green'" style="background-color: green;"><td><input type="checkbox"></td></tr>
</table>
Вот сама страница, если что.
Вложения
Тип файла: zip tr.html.zip (608 байт, 17 просмотров)
0
1 / 1 / 1
Регистрация: 23.05.2010
Сообщений: 17
31.10.2010, 10:54  [ТС]
Цитата Сообщение от Hagrael Посмотреть сообщение
Xander84, мой код это делает.

Добавлено через 4 минуты
Вот скрипт:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    function choose(element) {
        var childs=element.childNodes
        for (var i=0, L=childs.length; i<L; i++) {
            if (typeof childs[i] != "undefined") {
                if (childs[i].tagName=="TD") {
                    childs=childs[i].childNodes
                    for (var i=0, L=childs.length; i<L; i++) {
                        if (typeof childs[i] != "undefined") {
                            if (childs[i].tagName=="INPUT") {
                                if (childs[i].checked==false) {
                                    childs[i].checked=true
                                } else {
                                    childs[i].checked=false
                                }
                                break
                            }
                        }
                    }
                    break
                }
            }
        }
    }
    function hover(element) {
        var childs=element.childNodes
        for (var i=0, L=childs.length; i<L; i++) {
            if (typeof childs[i] != "undefined") {
                if (childs[i].tagName=="TD") {
                        childs=childs[i].childNodes
                    for (var i=0, L=childs.length; i<L; i++) {
                        if (typeof childs[i] != "undefined") {
                            if (childs[i].tagName=="INPUT") {
                                if (childs[i].checked==false) {
                                    element.style.backgroundColor="blue"
                                }
                                break
                            }
                        }
                    }
                    break
                }
            }
        }
    }
Вот HTML:
HTML5
1
2
3
<table width="100%">
<tr onclick="choose(this)" onmouseover="hover(this)" onmouseout="this.style.backgroundColor='green'" style="background-color: green;"><td><input type="checkbox"></td></tr>
</table>
Вот сама страница, если что.
Мне надо чтобы таблица была такого вида именно!
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  <table width="100%" cellspacing="0" border="1">
    <tr>
        <td><input name="neft" type="checkbox" value="1" id="neft" /> Нефть</td>
    <tr/>
    <tr>
        <td><input name="zoloto" type="checkbox" value="2" id="zoloto" /> Золото</td>
    <tr/>
    <tr>
        <td><input name="drevesina" type="checkbox" value="3" id="drevesina" /> Древесина</td>
    <tr/>    
   <tr>
    <td onclick="check(0)">Нефть</td>
   </tr>
   <tr>
    <td onclick="check(1)">Золото</td>
   </tr>
   <tr>
    <td onclick="check(2)">Древесина</td>
   </tr>
  </table>
а в твоем случае так не получается! то есть мне надо чтобы чекбокс находился вне tr по которому кликаешь!
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
31.10.2010, 11:57
Цитата Сообщение от Xander84 Посмотреть сообщение
а как можно сделать чтобы при повторном нажатии галочка снималась?

JavaScript
1
2
3
4
5
6
7
8
9
    function check(i, td) {
        var checkboxes = [
            document.getElementById('neft'),
            document.getElementById('zoloto'),
            document.getElementById('drevesina')
        ];
        checkboxes[i].checked = true;
        td.parentNode.className = 'checked';
    }
и цвет возвращался в исходное положение!
Для этого надо чуток изменить JS:
JavaScript
1
2
3
4
5
6
7
8
    function check(i, td) {
        var checkboxes = [
            document.getElementById('neft'),
            document.getElementById('zoloto'),
            document.getElementById('drevesina')
        ];
        td.parentNode.className = (checkboxes[i].checked = !checkboxes[i].checked) ? 'checked' : '';
    }
1
БТР - мой друг
 Аватар для Hagrael
333 / 277 / 47
Регистрация: 07.01.2010
Сообщений: 1,932
31.10.2010, 14:12
Xander84, там такая же структура.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru