<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Deerua about Coding: последние заметки с тегом &amp;laquo;getElementById&amp;raquo;</title><link>http://deer.org.ua/keywords/getelementbyid/</link><description></description><language>ru</language><generator>e2 (http://blogengine.ru/)</generator><item><title>getElementById IE BUG</title><guid isPermaLink="true">http://deer.org.ua/2008/08/15/2/</guid><link>http://deer.org.ua/2008/08/15/2/</link><comments>http://deer.org.ua/2008/08/15/2/comments/</comments><description>&lt;pre&gt;&lt;span class="hl-reserved"&gt;var&lt;/span&gt;&lt;span class="hl-default"&gt; $ = &lt;/span&gt;&lt;span class="hl-reserved"&gt;function &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-code"&gt;, &lt;/span&gt;&lt;span class="hl-identifier"&gt;doc&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
	&lt;/span&gt;&lt;span class="hl-reserved"&gt;if&lt;/span&gt;&lt;span class="hl-brackets"&gt;((&lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span class="hl-brackets"&gt;((&lt;/span&gt;&lt;span class="hl-reserved"&gt;typeof &lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-code"&gt; == &lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;string&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;||&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;id &lt;/span&gt;&lt;span class="hl-reserved"&gt;instanceof &lt;/span&gt;&lt;span class="hl-builtin"&gt;String&lt;/span&gt;&lt;span class="hl-brackets"&gt;) ) ){
		&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-code"&gt;!&lt;/span&gt;&lt;span class="hl-identifier"&gt;doc&lt;/span&gt;&lt;span class="hl-brackets"&gt;) { &lt;/span&gt;&lt;span class="hl-identifier"&gt;doc&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-builtin"&gt;document&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-brackets"&gt;}
		&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;ele&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;doc&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;getElementById&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt;;
		&lt;/span&gt;&lt;span class="hl-comment"&gt;// workaround bug in IE and Opera 8.2 where
		// getElementById returns wrong element
		&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;ele&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;ele&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-code"&gt; != &lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span class="hl-identifier"&gt;doc&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;all&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
			&lt;/span&gt;&lt;span class="hl-identifier"&gt;ele&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-reserved"&gt;null&lt;/span&gt;&lt;span class="hl-code"&gt;;
			&lt;/span&gt;&lt;span class="hl-comment"&gt;// get all matching elements with this id
			&lt;/span&gt;&lt;span class="hl-identifier"&gt;eles&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;doc&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;all&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;;
			&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;eles&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
				&lt;/span&gt;&lt;span class="hl-comment"&gt;// if more than 1, choose first
 				// with the correct id
				&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;eles&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;length&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
					&lt;/span&gt;&lt;span class="hl-reserved"&gt;for &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt;=&lt;/span&gt;&lt;span class="hl-number"&gt;0&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt; &amp;lt; &lt;/span&gt;&lt;span class="hl-identifier"&gt;eles&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;length&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-code"&gt;++&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
						&lt;/span&gt;&lt;span class="hl-reserved"&gt;if &lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-identifier"&gt;eles&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-code"&gt; == &lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-brackets"&gt;) {
							&lt;/span&gt;&lt;span class="hl-identifier"&gt;ele&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;eles&lt;/span&gt;&lt;span class="hl-brackets"&gt;[&lt;/span&gt;&lt;span class="hl-identifier"&gt;i&lt;/span&gt;&lt;span class="hl-brackets"&gt;]&lt;/span&gt;&lt;span class="hl-code"&gt;;
							&lt;/span&gt;&lt;span class="hl-reserved"&gt;break&lt;/span&gt;&lt;span class="hl-code"&gt;;
						&lt;/span&gt;&lt;span class="hl-brackets"&gt;}
					}
				} &lt;/span&gt;&lt;span class="hl-comment"&gt;// return 1 and only element
				&lt;/span&gt;&lt;span class="hl-reserved"&gt;else &lt;/span&gt;&lt;span class="hl-brackets"&gt;{ &lt;/span&gt;&lt;span class="hl-identifier"&gt;ele&lt;/span&gt;&lt;span class="hl-code"&gt; = &lt;/span&gt;&lt;span class="hl-identifier"&gt;eles&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-brackets"&gt;}
			}
		}&lt;/span&gt;&lt;span class="hl-reserved"&gt;return &lt;/span&gt;&lt;span class="hl-identifier"&gt;ele&lt;/span&gt;&lt;span class="hl-code"&gt;;
	&lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;span class="hl-reserved"&gt;return &lt;/span&gt;&lt;span class="hl-identifier"&gt;id&lt;/span&gt;&lt;span class="hl-code"&gt;; &lt;/span&gt;&lt;span class="hl-comment"&gt;// assume it's a node
&lt;/span&gt;&lt;span class="hl-brackets"&gt;}&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;Теперь вместо &lt;span class="hl-identifier"&gt;doucment&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;getElementById&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-code"&gt;&#0171;&lt;/span&gt;&lt;span class="hl-identifier"&gt;somekrap&lt;/span&gt;&lt;span class="hl-code"&gt;&#0187;&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt; пишешь &lt;span&gt;$&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-code"&gt;"&lt;/span&gt;&lt;span class="hl-identifier"&gt;somekrap&lt;/span&gt;&lt;span class="hl-code"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;/span&gt; устраняет много проблем, когда голимый ИЕ не видит Элемент по названию айди. Вернее он выберает не по &lt;b&gt;Id&lt;/b&gt; а по &lt;b&gt;Name&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ещё одна прелесть этого скрипта, можно сразу указать другой тип Документа, например &lt;b&gt;iframe&lt;/b&gt;&lt;pre&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;myIFrame&lt;/span&gt;&lt;span class="hl-default"&gt; = $&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;iframe_id&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;contentWindow&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-builtin"&gt;document&lt;/span&gt;&lt;span class="hl-default"&gt;;  
&lt;/span&gt;&lt;span class="hl-reserved"&gt;var &lt;/span&gt;&lt;span class="hl-identifier"&gt;div4id&lt;/span&gt;&lt;span class="hl-default"&gt; = $&lt;/span&gt;&lt;span class="hl-brackets"&gt;(&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-string"&gt;div_from_frame&lt;/span&gt;&lt;span class="hl-quotes"&gt;"&lt;/span&gt;&lt;span class="hl-code"&gt;,&lt;/span&gt;&lt;span class="hl-identifier"&gt;myIFrame&lt;/span&gt;&lt;span class="hl-brackets"&gt;)&lt;/span&gt;&lt;span class="hl-default"&gt;.&lt;/span&gt;&lt;span class="hl-identifier"&gt;innerHTML&lt;/span&gt;&lt;span class="hl-default"&gt;;

&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ужатый вариант:&lt;br /&gt;&lt;textarea onclick="select();" style="width: 600px; height: 36px;" wrap="off" &gt;var $ = function (id, doc) {if((id)&amp;&amp;((typeof id == "string")||(id instanceof String) ) ){if (!doc) { doc = document; }var ele = doc.getElementById(id);if (ele &amp;&amp; (ele.id != id) &amp;&amp; doc.all) {ele = null;eles = doc.all[id];if (eles) {if (eles.length) {for (var i=0; i &lt; eles.length; i++) {if (eles[i].id == id) {ele = eles[i];break;}}}else { ele = eles; }}}return ele;}return id;}&lt;/textarea&gt;&lt;br /&gt;&lt;hr /&gt;&lt;a href="http://deer.org.ua/2008/08/15/2/comments/"&gt;Комментарии&lt;/a&gt; к заметке&lt;br /&gt;&lt;br /&gt;Теги:&lt;br /&gt;&lt;a href="http://deer.org.ua/tags/javascript/"&gt;javascript&lt;/a&gt; &amp;gt; &lt;a href="http://deer.org.ua/tags/javascript/document/"&gt;document&lt;/a&gt; &amp;gt; &lt;a href="http://deer.org.ua/tags/javascript/document/getelementbyid/"&gt;getElementById&lt;/a&gt;</description><pubDate>Fri, 15 Aug 2008 11:42:25 +0200</pubDate></item></channel></rss>