<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>trafex &#187; replaceHTML</title>
	<atom:link href="http://trafex.de/blog/tag/replacehtml/feed/" rel="self" type="application/rss+xml" />
	<link>http://trafex.de</link>
	<description>webdev blog</description>
	<lastBuildDate>Mon, 05 Mar 2012 18:26:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Wenn innerHTML nicht schnell genug ist</title>
		<link>http://trafex.de/blog/13/wenn-innerhtml-nicht-schnell-genug-ist/</link>
		<comments>http://trafex.de/blog/13/wenn-innerhtml-nicht-schnell-genug-ist/#comments</comments>
		<pubDate>Thu, 10 Jan 2008 18:24:16 +0000</pubDate>
		<dc:creator>StefanB</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[innerHTML]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[replaceHTML]]></category>
		<category><![CDATA[WebDev]]></category>

		<guid isPermaLink="false">http://trafex.de/blog/13/wenn-innerhtml-nicht-schnell-genug-ist/</guid>
		<description><![CDATA[Es gibt mehrere Wege Inhalt auf einer Seite auszutauschen. Man kann das DOM Modell verwenden, welches von W3 Konsortium standardisiert worden ist. Die gebräuchlichere Variante ist jedoch in den meisten Fällen innerHTML zu benutzen. Auch ist die Verwendung von innerHTML mit den meisten Browsern schneller als die Verwendung der DOM Methoden. Beispiel: &#60;p id=&#34;inhalt&#34;&#62;Hier kommt [...]]]></description>
			<content:encoded><![CDATA[<p>Es gibt mehrere Wege Inhalt auf einer Seite auszutauschen. Man kann das DOM Modell verwenden, welches von W3 Konsortium standardisiert worden ist. Die gebräuchlichere Variante ist jedoch in den meisten Fällen innerHTML zu benutzen. Auch ist die Verwendung von innerHTML mit den meisten Browsern schneller als die Verwendung der DOM Methoden.</p>
<p>Beispiel:</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;">&lt;p id=&quot;inhalt&quot;&gt;Hier kommt beliebiger Inhalt
&lt;a href=&quot;#&quot; onclick=&quot;document.getElementById('inhalt').innerHTML='Und jetzt der neue Text';&quot;&gt;Inhalt tauschen&lt;/a&gt;</pre></div></div>

<p>Wenn jedoch viele HTML-Elemente in dem zu tauschendem Inhalt sind, kann das Austauschen durchaus etwas Zeit in Anspruch nehmen.</p>
<p>Steven Levithan stellt in seinem <a href="http://blog.stevenlevithan.com/archives/faster-than-innerhtml" target="_blank">Blog</a> mit replaceHTML eine JavaScript-Funktion vor, welche diese Aufgabe schneller erledigen kann.<span id="more-13"></span></p>
<p>Code:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> replaceHtml<span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> html<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> oldEl <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">typeof</span> el <span style="color: #339933;">===</span> <span style="color: #3366CC;">&quot;string&quot;</span> <span style="color: #339933;">?</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span>el<span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> el<span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">/*@cc_on // Pure innerHTML is slightly faster in IE
    oldEl.innerHTML = html;
    return oldEl;
    @*/</span>
    <span style="color: #003366; font-weight: bold;">var</span> newEl <span style="color: #339933;">=</span> oldEl.<span style="color: #660066;">cloneNode</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    newEl.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> html<span style="color: #339933;">;</span>
    oldEl.<span style="color: #660066;">parentNode</span>.<span style="color: #660066;">replaceChild</span><span style="color: #009900;">&#40;</span>newEl<span style="color: #339933;">,</span> oldEl<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #006600; font-style: italic;">/* Since we just removed the old element from the DOM, return a reference
    to the new element, which can be used to restore variable references. */</span>
    <span style="color: #000066; font-weight: bold;">return</span> newEl<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Beispiel für die Benutzung:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #006600; font-style: italic;">// innerHTML</span>
el.<span style="color: #660066;">innerHTML</span> <span style="color: #339933;">=</span> newHtml
&nbsp;
<span style="color: #006600; font-style: italic;">// replaceHTML</span>
el <span style="color: #339933;">=</span> replaceHtml<span style="color: #009900;">&#40;</span>el<span style="color: #339933;">,</span> newHtml<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Wenn man nur wenige Elemente überschreibt macht die Benutzung von replaceHTML allerdings wenig Sinn. Seine Stärken kann die Funktion nur ausspielen wenn man wirklich viele Elemente austauscht. Und da vor allem beim Verwerfen von vorhandenen Elementen.<br />
Einen kleinen Benchmark, der im Browser läuft, stellt er auch gleich zur Verfügung: <a href="http://stevenlevithan.com/demo/replaceHtml.html" target="_blank">Link</a></p>
]]></content:encoded>
			<wfw:commentRss>http://trafex.de/blog/13/wenn-innerhtml-nicht-schnell-genug-ist/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.204 seconds -->

