|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|||||||||||
Xpath и нажатие на checkbox и radiobutton02.09.2015, 21:18. Показов 3340. Ответов 20
Метки нет (Все метки)
Добрый вечер!
Пытаюсь сделать check\checked на чекбоксе и радиобатоне при помощи JS и Xpath, но не получается. Подскажите, как это сделать. HTML: Кликните здесь для просмотра всего текста
0
|
|||||||||||
| 02.09.2015, 21:18 | |
|
Ответы с готовыми решениями:
20
CheckBox и RadioButton Checkbox и RadioButton |
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||
| 03.09.2015, 18:38 [ТС] | ||
|
0
|
||
|
111 / 49 / 20
Регистрация: 21.10.2013
Сообщений: 212
|
|
| 03.09.2015, 18:47 | |
Сообщение было отмечено Nullik как решение
Решение
Nullik, во-первых не надо использовать xpath если не стоит задача от преподавателя использовать xpath. DOM - это не просто xml а такая более конкретная структура в которой есть свои методы поиска, пользоваться которыми куда проще чем XPath.
Если все же надо XPath то обратите внимание что evaluate возвращает не ноду, а некий объект типа XPathResult из которого ноду надо еще вытащить например через .singleNodeValue или .iterateNext()
1
|
|
|
Ренегат
|
|
| 03.09.2015, 19:23 | |
Сообщение было отмечено Nullik как решение
Решение
Nullik, простыми словами
для html dom лучше использовать встроенные в него методы, они как минимум проще и быстрее а для поиска по css, могу предложить почитать про сами селекторы, и то, что уже фигурировало, в посте Jetlag
1
|
|
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|||
| 03.09.2015, 20:39 [ТС] | |||
|
преподаватель тут вообще ничего не говорил (что можно или что нельзя), я сама выбрала xpath.
И мне надо не XML, а HTML, а как там тогда достать конкретный элемент? Т.е., есть вот там какой-нибудь радиобаттон и именно он нужен. то как быстрее всего до него указать путь, при этом не изобретать 100500 великов? Вооот, первым делом до меня дошёл XPath, но если есть что-то ещё и по нему есть уже реализованные вещи 9библиотеки, примеры, паттерны) - было бы тоже неплохо))) Я думаю, что мне как раз не хватало этого для работы:
0
|
|||
|
111 / 49 / 20
Регистрация: 21.10.2013
Сообщений: 212
|
|
| 03.09.2015, 21:19 | |
|
Nullik, ну Вы можете зайти по ссылке которую вам уже два человека дали или подождать пока придет кто-нибудь третий и даст эту же ссылку.
Работать с html страницей приходится почти всегда, XPath для этого ужасно громоздок, сложен и поэтому не применяется. Я понимаю, что это понятие знакомо по другим языкам и неохота вникать в новые сущности. Но это как скажем писать на сях и вместо if else писать ассемблерными джампами потому что "да ну его этот условный оператор". Так вот, для работы c html и подобными структурами браузеры реализуют интерфейс называемый Document Object Model стандартизированный w3c. В этом интерфейсе определены классные методы поиска, простые по сравнению с XPath, (я таки кину ссылку в третий раз: http://learn.javascript.ru/searching-elements-dom). В js принято задавать элементам свойство class по смыслу (реже id) и искать по нему Мало того, стандарт де-факто в индустрии - библиотека jQuery в которой имя метода поиска по документу состоит из одного символа $, который сам сожрет любой нормальный селектор и поймет к чему он относится PS: js - интерпретируемый язык. То есть что происходит - можно обычно посмотреть на лету, не перегружая страницу. Жмем f12 - открывается консоль отладки, в которой можно пообщаться с интерпретатором, можно посмотреть какие методы есть у объекта, или скажем впилить брейкпоинт и посмотреть скоуп и коллстэк. Ну и ошибки туда пишутся понятным языком
0
|
|
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
| 03.09.2015, 21:29 [ТС] | |
|
аааа, эти методы я знаю, что Вы. Проблема только вот в чём: никто мне точно не может гарантировать что id будет один, или что <div class="f g h"> не встретиться ещё раз (тогда там либо первое вхождение, либо вручную считать, но у меня динамика). Эти варианты я уже смотрела, не увидела в них пользы для моего проекта, хотя они проще для понимания, это верно.
Спасибо за ссылку в третий раз))
0
|
|
|
111 / 49 / 20
Регистрация: 21.10.2013
Сообщений: 212
|
|
| 03.09.2015, 21:38 | |
|
Nullik, мне кажется что Вы либо недопоняли как работают методы либо недопоняли чего хотите.
Тезисно: 1. Вам не нужен XPath. 99.9% что не нужен. 2. Методы поиска по DOM достаточно умны чтобы разобраться со всем чем надо. 99.9% что их вам хватит. Если кажется что не хватает - подумайте еще раз.
0
|
|
|
Ренегат
|
|
| 03.09.2015, 21:41 | |
|
Nullik, то, что id в документе не будут повторятся это вам гарантирую я
Добавлено через 1 минуту думаю Jetlag присоединится, поскольку id, как написано в спецификации, должен быть уникальным, он не может повторятся, браузеры конечно проглотят, но второй id они читать уже не будут
0
|
|
|
111 / 49 / 20
Регистрация: 21.10.2013
Сообщений: 212
|
|
| 03.09.2015, 21:58 | |
|
Вообще говоря "xpath не нужен" я во многом ориентируюсь на уровень вопроса конечно. Он может прекрасно применяться людьми которые точно знают что делают и зачем.
Если посмотреть в сферическом вакууме то главные минусы XPath: 1. Сложность отладки 2. Громоздкость 3. Относительная бажность реализации в браузерах 4. Читабельность и поддерживаемость. Все используют css селекторы. А плюс - скорость выше, иногда существенно. Так что XPath можно использовать если Вы разрабатываете какую-то очень серьезную продакшн либу с большими требованиями к скорости. Но я чет сомневаюсь =)
0
|
|
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||
| 04.09.2015, 09:59 [ТС] | ||
|
Нет, разумеется не продакшн либа, что вы
![]() Делала я как-то шутки ради парсер на сайт яндекса - всё прекрасно парсилось и искалось через DOM методы. Правда стоит заметить, что делала я это на стандартном браузере WFApp (C#). А потом я взяла другой сайт (не яндекс) и парсилось не всё прекрасно, а проблема была вот в чём: когда я получала узел, то вместе с ним я получала ещё какие-то "лишние знаки", в прямом смысле этого слова. Какие-то непонятные переносы типа \n или пробелы. А самое забавное - весь узел и ниже ветки. Т.е., на сайте яндекса DOM отлично работал, а на другом сайте я не смогла даже вызвать метод nextChild, хотя он там 100% был. Поверьте, на том сайте не было у каждого... элемента id, а классы могли повторяться. И чтобы мне из двух одинаковых элементов выбрать второй приходилось вторым шагом брать child. А если мне нужно было 10 таких элементов? Т.е., проблема там была в том, что взяв 1 раз - другое уже не получится взять, а на яндексе всё работало прекрасно. Я могла получить форму как узел, потом в ней ковыряться как хотеть, запускать циклы и прочее и всё прекрасно работало. Т.е., я понять не могу - почему на одном вдруг всё работает хорошо, на другом только 1 элемент найдёт, с ним может работать, а если спуститься к "соседу-элементу", то "не хочу, не буду" ? Может быть здесь было просто что-то, что я не совсем поняла и что у меня не получилось исправить. Но я код копипастила, дабы уж точно "не ошибиться в 1 строке", и проверяла, и сама в ручную проверяла - ну получает он при получении узла не объект, а ерунду какую-то и всё, а при таком же коде, но другом сайте - нормально получает, мистика. Я то использовать простые вещи только рада, работали бы они везде хорошо
0
|
||
|
Ренегат
|
||
| 04.09.2015, 18:09 | ||
|
вы поймите, если сайт сделан более-менее грамотно, а это 99% всего инета, то там точно используются уникальные id короче, используйте id для уникальных вещей на странице PS никогда пока на своём опыте не встречал сайтов, где было бы 2 id Добавлено через 3 минуты да и вообще использовать 2 и более одинаковых id это максимально не грамотно
0
|
||
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
| 04.09.2015, 19:42 [ТС] | |
|
да я это знаю, правда)) я за других переживаю, вдруг этих id будет 2, что делать, в случае ошибки? вот-вот))
т.е. либо кучу проверок, либо что-то более действенное и не использовать такое, что "блокнотом не проверяется" (уникальность id не проверяется). Но допустить можно, почему бы нет. Можно даже попробовать реализовать 2 варианта, мне даже если элемент искать ручными средствами, всё равно нужно до элемента как-то путь указать. а это прям строчка xpath (или самодельного для программы-алгоритма-функции).
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|||||||
| 04.09.2015, 20:03 | |||||||
|
например
1
|
|||||||
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
||||||
| 04.09.2015, 20:14 [ТС] | ||||||
0
|
||||||
|
46 / 15 / 4
Регистрация: 13.03.2013
Сообщений: 302
|
|
| 06.09.2015, 21:10 [ТС] | |
|
потому что есть два span ?
0
|
|
|
Ренегат
|
|
| 07.09.2015, 15:39 | |
|
Nullik, ну и, прикол в том, что код изначально не рабочий
я конечно не могу критиковать авторитета, но всё же код не рабочий, поскольку с node немного по другому работают Добавлено через 2 минуты поскольку сначала возвращается nodeList, а буква "а" приравнивается к числу, а дальше уже не понятно почему ошибку вообще не выводит
1
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|||||||
| 07.09.2015, 18:06 | |||||||
|
упс, прошу прощения, промашка у меня вышла... двойная при этом
метод item () со строковым значением параметра работает только в браузере MSIE, и только для коллекций all, anchors, applets, areas, boundElements, cells, elements, embeds, forms, images, links, mimeTypes, options, plugins, rows, scripts, tBodies так что... определять уникальность id надо по иному, например, так:
в программировании авторитетов нет, ибо всякое утверждение легко проверяется
0
|
|||||||
| 07.09.2015, 18:06 | |
|
Помогаю со студенческими работами здесь
20
CheckBox и RadioButton RadioButton + CheckBox RadioButton (RadioGroup) CheckBox RadioButton, CheckBox и Timer Взаимодействие с CheckBox и RadioButton Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|