`
Classicning
  • 浏览: 250687 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Node#setAttribute的一些问题

    博客分类:
  • WEB
阅读更多
一直以来IE对DOM中setAttribute方法的支持一直存在着一些问题,毫无疑问我们可以用setAttribute方法为任何一个Node添加和修改一个属性,但是事实上很多时候这个属性不并能真正进入DOM实现它本身的功能。

之前我曾经写过一篇关于为Element绑定事件方法的文章,当时就发现在IE7中,虽然用setAttribute("onclick","hello();")方法确实可以将onclick写入DOM(这一点可以用微软的IEDevToolBar看出来,如果它没有骗我们的话),但是触发click事件的时候并没有响应。同样的方法在Firefox上是完全可行的。当时我认为hello或许是一个Function类型的值,因而不能得到响应。但是这个观点看来是错误的。

昨天有一次使用了setAttribute方法,这次是setAttribute('class','more'),毫无疑问className是一个字符串类型。但是发生在IE上的事情和上次一样,DOM写入了,但是并没有真正被解析器解析为一个css类选择器的调用。

其实本来在JavaScript中讨论数据类型意义就是不大的,因为它是弱类型。问题的主要原因是处在IE对setAttribute的支持不足。IE只能将setAttribute传入的属性和属性值写入DOM,但是并不与渲染引擎相关联,它的表现仅仅是一个文本形式的名值对。

因此,要使用类似的功能,可以使用HTML DOM中的一些特殊属性值来进行设置。比如在HTML DOM中,包含onclick和className这两个可读可写的属性,只要直接给这两个属性用“=”赋值即可。IE对于这种方法是完全支持的,并且这种方法也符合W3C的HTML DOM相关标准。
分享到:
评论

相关推荐

    用VB 6操作XML文件

    Call Root_Node.setAttribute("属性", "http://www.w3.org/2001/XMLSchema") Call Root_Node.setAttribute("属性", "http://www.w3.org/2001/XMLSchema-instance") Call Root_Node.setAttribute("属性", ...

    javascript setAttribute, getAttribute 在不同浏览器上的不同表现

    测试环境(客户端浏览器 ) IE6,IE7, IE8兼容模式, IE8 Firefox 3.6.8, google chrome 5.0.375.125 先来说明两个函数的标准定义。 elementNode.setAttribute(name,... 一、setAttribute的问题 elementNode为<tr>

    javascript中setAttribute兼容性用法分析

    本文实例分析了javascript中setAttribute兼容性用法。分享给大家供大家参考,具体如下: 1:常规属性建议使用 node.XXXX。 2:自定义属性建议使用node.getAttribute(“XXXX”)。...1、样式问题 setAttribu

    JavaScript对TreeView的操作

    node.setAttribute("Text","hgknight"); } 4.得到点击节点 function TreeView1.onclick() { alert(TreeView1.getTreeNode(TreeView1.clickedNodeIndex).getAttribute("Text"));...

    AnimatePlusAnnotation:中文动画加注释

    Animate Plus Annotation 源码阅读/注释 animateplus 是一个专注于性能和创作灵活性、提供稳定60 FPS的... node.setAttribute(attribute, value); return node; // 返回 node 供下一次遍历使用 }, document.creat

    Python中使用dom模块生成XML文件示例

    在Python中解析XML文件也有Dom和Sax两种方式,这里先介绍如何是使用Dom解析XML,这一篇文章...node.setAttribute(“att_name”, “arr_value”) 3、节点的标签值(data) 复制代码 代码如下: createTextNode(“node_value

    javascript封装的通用解析和操作xml文件数据工具类(含测试使用代码)

    document.getElementById('xmlOpTest').innerHTML += ' 得到节点的第一个节点: '+xmlUtils.getTagName(node) + "---" + xmlUtils.getText(node) +' ======== 节点类型:' + xmlUtils.getNodeType(node) + '...

    使用js完成节点的增删改复制等的操作

    需求:完成节点的增删改复制的操作 用到的方法和属性: 1.获取某个节点的父节点 parentNode属性 2.获取某个节点的子节点集合 childNodes属性 3.... 例如:aNode.setAttribute(“href”,”http://www.baidu.com”)

    vue 获取元素额外生成的data-v-xxx操作

    需求描述:由于样式中使用了scoped,所以编译后标签对中生成data-v-xxx属性。在【.dialog_content】的div中 动态添加元素节点p和span时...设置属性【nodeP.setAttribute(dataV, “”)】 var nodeP = document.createE

    超级有影响力霸气的Java面试题大全文档

    SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。EntityBean被用来代表应用系统中用到的数据。  对于客户机,SessionBean是一种非持久性对象,它实现某些在服务器...

    JavaScript权威指南

    JavaScript权威指南 犀牛书 Chapter 1. Introduction to JavaScript Section 1.1. JavaScript Myths Section 1.2.... Section 1.3.... Section 1.4.... Section 1.5.... Section 1.6.... Section 1.7.... Section 1.8....

    C#读取XML文件的基类实现

    刚到新单位,学习他们的源代码,代码里读写系统配置文件的XML代码比较老套,直接写在一个系统配置类里,没有进行类的拆分,造成类很庞大,同时,操作XML的读写操作都是使用SetAttribute和node.Attribute(name)方法,...

    无限菜单之 xml+popup 版(IE5.5+)

    pops[degree].document.body.setAttribute("degree", degree); return pops[degree]; } CreatePopup(1); //创建一个2层的Popup家族 这个方法可以解决多个Popup共存的问题,只是如果要使用这个方法来实现...

    Select精美下拉框(漂亮)

    document.all.SS_TempDiv.removeNode(); } function SS_write (srcHTML, ListMax, bAutoDetect) { var oSS = new SS_create(srcHTML, ListMax, bAutoDetect); oSS.display(); return oSS; } function SS_...

Global site tag (gtag.js) - Google Analytics