Полезная информация

Mozilla Россия — свежие версии программ Mozilla, а также масса полезной информации по каждому продукту.

№113-01-2006 17:53:01

Reiter
Участник
 
Группа: Members
Откуда: Moscow
Зарегистрирован: 07-01-2006
Сообщений: 4

Как получить элемент по Name?

Такксс.....короче суть проблемы состоит в том, что существует код типа:

Выделить код

Код:

...
  var item = window.getBrowser().contentDocument.getElementById("BlaBlaBla");
  ...

...как видно, данный код вернет нам элемент по Id, но на многих сайтах поставить Id, либо забывают, либо ленятся. от сюда следует вопрос, как вытащить элемент по Name??? Пробавал через getElementsByTagName, но положительных результатов не было.

Жду вариантов решения проблемы. Спасибо

Отсутствует

 

№213-01-2006 18:11:54

Snik
Участник
 
Группа: Members
Зарегистрирован: 27-04-2005
Сообщений: 425
Веб-сайт

Re: Как получить элемент по Name?

Reiter
В смысле, по атрибуту name? Это только унаследованными средствами DOM 0, т.е. через массивы document.links['name_value'], document.images[] и т.п.

Отсутствует

 

№313-01-2006 22:07:26

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
Веб-сайт

Re: Как получить элемент по Name?

Выделить код

Код:

getElementsByName()

Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№414-01-2006 00:22:34

Al_H
Away
 
Группа: Members
Откуда: SPb
Зарегистрирован: 10-06-2005
Сообщений: 5508

Re: Как получить элемент по Name?

Выделить код

Код:

var resultsByName=document.evaluate("//div[@name='SomeName']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
if(resultsByName.snapshotLength) {
    for(var i=0,cOdj;i<resultsByName.snapshotLength;i++) {
        cOdj=resultsByName.snapshotItem(i);
        ...
    }
}

Работает только в браузерах, поддерживающих XPath, например, Mozilla Firefox (не упрекайте меня, что я какой-то браузер забываю, потому что я привожу только один пример).

Отредактировано Al_H (14-01-2006 00:23:24)

Отсутствует

 

№514-01-2006 14:32:12

Reiter
Участник
 
Группа: Members
Откуда: Moscow
Зарегистрирован: 07-01-2006
Сообщений: 4

Re: Как получить элемент по Name?

Lynn пишет
Выделить код

Код:

getElementsByName()

Хм....если я правильно понимаю, то вы подразумеваете nsIDOMHTMLDocument.getElementsByName()  или
HTMLDocument.getElementsByName().

Почитав описание на XulPlanethttp://www.xulplanet.com/references/obj … ument.html про HTMLDocument, я там и не понял способ его вызова из JS, пробовал

Выделить код

Код:

var item = HTMLDocument.getElementsByName("Blaaa");

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

Al_H пишет

Работает только в браузерах, поддерживающих XPath, например, Mozilla Firefox (не упрекайте меня, что я какой-то браузер забываю, потому что я привожу только один пример).

Спасибо, за пример, правда его еще не проверял, но если этот способ рабочий и другой альтернативы не будет, то обязательно воспользуюсь ;-)

Snik пишет

Reiter
В смысле, по атрибуту name? Это только унаследованными средствами DOM 0, т.е. через массивы document.links['name_value'], document.images[] и т.п.

Да, в смысле по атрибуту Name.  Хм... можно воспользоваться и таким способом, но мне кажется имеет смысл поигратся с интерфейсами.


Все спасибо, жду еще пояснений и новых предложений.

Отсутствует

 

№614-01-2006 16:38:52

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
Веб-сайт

Re: Как получить элемент по Name?

Выделить код

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<input name="x" value="zzz">
<input type="button" value="click me" onclick="alert(document.getElementsByName('x')[0].value)">
</body>
</html>

HTMLDocument — это класс, а элемент называется просто document.

Отредактировано Lynn (14-01-2006 16:40:42)


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№714-01-2006 20:29:43

Reiter
Участник
 
Группа: Members
Откуда: Moscow
Зарегистрирован: 07-01-2006
Сообщений: 4

Re: Как получить элемент по Name?

Тут еще один вопрос появился. Чтобы не плодить новые темы напишу здесь.

Короче, с помощью такого вот кода:

Выделить код

Код:

...
   var HTMLDoc = Components.interfacesByID['{a6cf9084-15b3-11d2-932e-00805f8add32}'];
   var Items = Components.interfacesByID['{a6cf907d-15b3-11d2-932e-00805f8add32}'];
   ...
   HTMLDoc = window.getBrowser().contentDocument;
   Items = HTMLDoc.getElementsByName("BlaBlaBla");
   if (Items.length > 0)
   {
      ...
        что-то делаем
      ...
   }

...этим когом мы находим нужный нам элемент, но возникла другая проблема, как в него вставить значения? На выходе мы получаем интерфейс nsIDOMNode (http://www.xulplanet.com/references/xpc … MNode.html). Пробовал вставлять значения в nodeValue и просто Value, но безрезультатно.

Есть, какие либо соображения по этому поводу?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]