>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Как получить элемент по Name? http://forum.mozilla-russia.org/viewtopic.php?id=7518 |
Reiter > 13-01-2006 17:53:01 |
Такксс.....короче суть проблемы состоит в том, что существует код типа: ...как видно, данный код вернет нам элемент по Id, но на многих сайтах поставить Id, либо забывают, либо ленятся. от сюда следует вопрос, как вытащить элемент по Name??? Пробавал через getElementsByTagName, но положительных результатов не было. Жду вариантов решения проблемы. Спасибо |
Snik > 13-01-2006 18:11:54 |
Reiter |
Lynn > 13-01-2006 22:07:26 |
Al_H > 14-01-2006 00:22:34 |
Выделить код Код: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 (не упрекайте меня, что я какой-то браузер забываю, потому что я привожу только один пример). |
Reiter > 14-01-2006 14:32:12 |
Lynn пишет Хм....если я правильно понимаю, то вы подразумеваете nsIDOMHTMLDocument.getElementsByName() или Почитав описание на XulPlanethttp://www.xulplanet.com/references/obj … ument.html про HTMLDocument, я там и не понял способ его вызова из JS, пробовал , но ничего дельного не получилось, выполнения скрипта сыпалось именно на данной строке. Если, кто может приведите пример вызова, а я пока попробую вытащить элемент через интерфейсы, о результатах доложу здесь :-) Al_H пишет
Спасибо, за пример, правда его еще не проверял, но если этот способ рабочий и другой альтернативы не будет, то обязательно воспользуюсь ;-) Snik пишет
Да, в смысле по атрибуту Name. Хм... можно воспользоваться и таким способом, но мне кажется имеет смысл поигратся с интерфейсами. Все спасибо, жду еще пояснений и новых предложений. |
Lynn > 14-01-2006 16:38:52 |
Выделить код Код:<!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. |
Reiter > 14-01-2006 20:29:43 |
Тут еще один вопрос появился. Чтобы не плодить новые темы напишу здесь. Короче, с помощью такого вот кода: Выделить код Код:... 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, но безрезультатно. Есть, какие либо соображения по этому поводу? |