<?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>JerryQu的小站 &#187; Attribute</title>
	<atom:link href="http://www.qgy18.com/tag/attribute/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.qgy18.com</link>
	<description></description>
	<lastBuildDate>Tue, 16 Mar 2010 03:42:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>IE与Firefox处理Attribute的几点差异</title>
		<link>http://www.qgy18.com/2008/09/dom_attribute/</link>
		<comments>http://www.qgy18.com/2008/09/dom_attribute/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 07:24:28 +0000</pubDate>
		<dc:creator>Jerry Qu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[Attribute]]></category>
		<category><![CDATA[DOM]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://www.qgy18.com/?p=42</guid>
		<description><![CDATA[前端开发中，经常需要动态的添加、移除或者获取元素的Attribute。也就是说经常会用到setAttribute、removeAttribute和getAttribute。今天要讨论的是开发中遇到的几处IE与Firefox对Attribute操作的差异。 属性名大小写 在Firefox中，属性没有小写的概念，就算属性名全用大写，Firefox也会解析成小写，用Firebug看就能看到。所以下面的代码在Firefox与IE中运行结果会不一样。 &#60;div altStr=&#34;sss&#34... ]]></description>
			<content:encoded><![CDATA[<p>前端开发中，经常需要动态的添加、移除或者获取元素的Attribute。也就是说经常会用到setAttribute、removeAttribute和getAttribute。今天要讨论的是开发中遇到的几处IE与Firefox对Attribute操作的差异。</p>
<p><strong>属性名大小写</strong></p>
<p>在Firefox中，属性没有小写的概念，就算属性名全用大写，Firefox也会解析成小写，用Firebug看就能看到。所以下面的代码在Firefox与IE中运行结果会不一样。</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;"> </span><span style="color: #00008b;">altStr</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">sss</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;var div = document.getElementsByTagName(&quot;div&quot;)[0];<br />&nbsp;div.removeAttribute(&quot;altstr&quot;);<br />&nbsp;alert(div.getAttribute(&quot;altstr&quot;));//IE中返回sss,FF中返回null<br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></div></div>
<p>不过在IE中，removeAttribute有第二个参数，设置为true表示不忽略大小写，为false时忽略大小写，默认值是true；Firefox中因为解析时就不存在大写属性了，所以就没有第二个参数。也就是说IE中removeAttribute(&#8220;test&#8221;,false)等同于Firefox中的removeAttribute(&#8220;test&#8221;)，IE中removeAttribute(&#8220;test&#8221;,true)在Firefox中无法实现。<span id="more-42"></span></p>
<p><strong>Button的value属性</strong></p>
<p>假设有下面一个button，怎么可以得到button的value属性？</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">a</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">b</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;</span></div></div>
<p>其实上，在IE下，无论是btn.getAttribute(&#8220;value&#8221;)、btn.value、btn.innerHTML还是btn.innerText都得&#8221;b&#8221;，但是在Firefox下，btn.getAttribute(&#8220;value&#8221;)、btn.value得到的都是&#8221;a&#8221;，btn.innerHTML得到的是&#8221;b&#8221;。也就是说我们如果要在button上加自定义属性，不要用&#8221;value&#8221;做属性名，否则在IE下没办法取到值。</p>
<p><strong>getAttribute返回值类型不同</strong></p>
<p>看一下下面的代码，你认为IE与Firefox分别会返回什么？</p>
<div class="hl-surround"><div class="hl-main"><span style="color: Olive;">&lt;</span><span style="color: Green;">button</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">alert(0)</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">b</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">button</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br /></span><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;"><br />&nbsp;var btn = document.getElementsByTagName(&quot;button&quot;)[0];<br />&nbsp;alert(btn.getAttribute(&quot;onclick&quot;));<br /></span><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></div></div>
<p>IE下，getAttribute(&#8220;onclick&#8221;)返回的是一个function，直接可以调用，Firefox下则返回一个string，直接调用会出错。</p>
<p><strong>题外话</strong></p>
<p>今天翻手册，看到上面对Button标签是这么描述的：</p>
<blockquote><p>当 <strong>BUTTON</strong> 元素在表单中提交的话，Microsoft<sup>®</sup> Internet Explorer 5 及以后版本将提交 VALUE 标签属性，若存在的话。否则就提交 innerText 属性。在 Internet Explorer 4.0  中，只会提交 <strong>innerText</strong> 值。</p></blockquote>
<p>但是我发现我的IE8对于form中的button，无论有没有value属性，都是提交button的innerHTML属性。不知道是什么回事。</p>
<p>扩展阅读：<a title="never-online weblog" href="http://www.never-online.net/blog/article.asp?id=228">在IE下用getAttribute时要小心</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.qgy18.com/2008/09/dom_attribute/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
