Страница 1 из 1

Массив полей, и массив элементов

Добавлено: 17 мар 2009, 11:00
grabus
Хотелось бы, чтобы в xhe был массив элементов.
т.е. например, если на странице несколько input с одинаковым name, то чтоб можно было пройтись массивом по всем элементам и выдернуть все которые нужны.
стандартные функции пока вроде не позволяют вытащить несколько одинаковых объектов. возвращается все время первый.

и вообще, был бы такой массив, было бы удобно.

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

а если такое будет, и в простом для использования варианте, было бы супер

Добавлено: 16 сен 2009, 21:59
bigfozzy
а можно по подробнее - что за массив и как им управлять ?

Добавлено: 16 ноя 2009, 09:12
qwe
топикстартер, наверное, имел ввиду примерно это:

1. xweb открывает страницу, отрабатывает вся ява и т.д.
2. после этого хорошо бы заполнить пхп-шный массив тем, что есть на странице. (input, buttons, images, radio, check, textarea и т.д.)

к примеру, назовем массив current_page.

Код: Выделить всё

print_r($current_page);

Array
(
    [input] => Array
        (
            [0] => 'value from $input->get_value_by_number(0)'
            [1] => '$input->get_value_by_number(1)'
            [2] => '$input->get_value_by_number(2)'
            [3] => '$input->get_value_by_number(3)'
        )
    [input_by_name] => Array
        (
            [0_xweb_login] => 'value from $input->get_value_by_number(0)'
            [1_xweb_password] => '$input->get_value_by_number(1)'
            [2_xweb_password] => '$input->get_value_by_number(2)'
            [3_xweb_login] => 'value from $input->get_value_by_number(3)'
        )

    [images] => Array
        (
            [0] => 'value from $image->get_href_by_number(0)'
            [1] => '$image->get_href_by_number(1)'
        )
)
в данном примере на странице есть два одинаково названных поля login и два поля password.

0_xweb_login, 0 - порядковый номер, _xweb_ - префикс, чтобы потом сплитом отделять порядковый номер от имени поля.

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

кстати, если пойти немного дальше, то хорошо бы, чтобы xweb отдавал таким же образом и другие параметры, например куки.

Добавлено: 07 июл 2010, 16:14
bok2007
Коснулись вопроса полей с одинаковыми названиями. То же столкнулся, так и не понял как их заполнять. К примеру есть 2 одинаковых по именам инпута. При попытке заполнить по имени, заполняется только 1 инпут, который стоит выше, а второй остается пустой, но по идеи должны заполнится оба инпута. Как мне все-таки заполнить оба инпута по имени элемента?

Добавлено: 09 июл 2010, 23:42
Germ
bok2007 писал(а):Коснулись вопроса полей с одинаковыми названиями. То же столкнулся, так и не понял как их заполнять. К примеру есть 2 одинаковых по именам инпута. При попытке заполнить по имени, заполняется только 1 инпут, который стоит выше, а второй остается пустой, но по идеи должны заполнится оба инпута. Как мне все-таки заполнить оба инпута по имени элемента?
Варианты:
использовать другие атрибуты?
$input->set_value_by_number($n,'')?
поставить фокус на ближайший к нему элемент и эмуляцией нажатия TAB добраться до нужного?

Добавлено: 10 июл 2010, 20:26
bok2007
Germ писал(а):
bok2007 писал(а):Коснулись вопроса полей с одинаковыми названиями. То же столкнулся, так и не понял как их заполнять. К примеру есть 2 одинаковых по именам инпута. При попытке заполнить по имени, заполняется только 1 инпут, который стоит выше, а второй остается пустой, но по идеи должны заполнится оба инпута. Как мне все-таки заполнить оба инпута по имени элемента?
Варианты:
использовать другие атрибуты?
$input->set_value_by_number($n,'')?
поставить фокус на ближайший к нему элемент и эмуляцией нажатия TAB добраться до нужного?
Обращение по ID элемента не подходит, т.к. он на разных сайтах различный. Может есть еще какие-нибудь варианты?

Добавлено: 16 июл 2010, 09:52
Germ
Вот например цикл по всем $input элементам, который заполняет те, у которых name нужный:

Код: Выделить всё

for($i=0;$i<$input->get_count();$i++){  
	if($input ->get_name_by_number($i) == "искомое_имя")
		$input ->set_value_by_number($i,"необходимая_строка");
	}
}
Работоспособность не проверял, но принцип должен быть ясен.