Страницы: 1
Такксс.....короче суть проблемы состоит в том, что существует код типа:
...как видно, данный код вернет нам элемент по Id, но на многих сайтах поставить Id, либо забывают, либо ленятся. от сюда следует вопрос, как вытащить элемент по Name??? Пробавал через getElementsByTagName, но положительных результатов не было.
Жду вариантов решения проблемы. Спасибо
Отсутствует
Isn't it ironic... don't you think? — Alanis Morissette
Отсутствует
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)
Отсутствует
Хм....если я правильно понимаю, то вы подразумеваете nsIDOMHTMLDocument.getElementsByName() или
HTMLDocument.getElementsByName().
Почитав описание на XulPlanethttp://www.xulplanet.com/references/obj … ument.html про HTMLDocument, я там и не понял способ его вызова из JS, пробовал
, но ничего дельного не получилось, выполнения скрипта сыпалось именно на данной строке. Если, кто может приведите пример вызова, а я пока попробую вытащить элемент через интерфейсы, о результатах доложу здесь :-)
Работает только в браузерах, поддерживающих XPath, например, Mozilla Firefox (не упрекайте меня, что я какой-то браузер забываю, потому что я привожу только один пример).
Спасибо, за пример, правда его еще не проверял, но если этот способ рабочий и другой альтернативы не будет, то обязательно воспользуюсь ;-)
Reiter
В смысле, по атрибуту name? Это только унаследованными средствами DOM 0, т.е. через массивы document.links['name_value'], document.images[] и т.п.
Да, в смысле по атрибуту 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
Отсутствует
Тут еще один вопрос появился. Чтобы не плодить новые темы напишу здесь.
Короче, с помощью такого вот кода:
... 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, но безрезультатно.
Есть, какие либо соображения по этому поводу?
Отсутствует
Страницы: 1