`
Classicning
  • 浏览: 255762 次
  • 性别: 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

    客户端操作TreeView的一些方法

    ### 客户端操作TreeView的一些方法 在Web开发过程中,TreeView控件因其强大的层次结构展示功能而被广泛应用于各类项目中。然而,对于前端开发者来说,如何有效地在客户端操作TreeView一直是一个较为复杂的问题,但...

    C#对xml文件的操作大全

    node.SetAttribute("ISBN", "2-3631-4"); // 添加子节点 XmlElement title = xmldoc.CreateElement("title"); title.InnerText = "CS从入门到精通"; node.AppendChild(title); XmlElement author = xmldoc....

    JavaScript对TreeView的操作

    node.setAttribute("Text", "hgknight"); } ``` #### 四、响应节点点击事件 当用户点击某个节点时,我们可以为 TreeView 控件绑定一个点击事件处理函数,以便执行特定的操作。 **代码示例:** ```javascript ...

    C#中创建XML文件

    node.SetAttribute("ISBN", "2-3631-4"); XmlElement title = xmldoc.CreateElement("title"); title.InnerText = "C#入门通"; node.AppendChild(title); XmlElement author = xmldoc.CreateElement("author...

    DOM Node接口定义了所有节点类型都包含的特性和方法

    - `getAttribute(name)`和`setAttribute(name, value)`:获取或设置元素节点的属性值。 - `removeAttribute(name)`:删除元素节点的指定属性。 5. **遍历与搜索**: - `querySelector(selector)`:根据CSS选择器...

    操作xml类文件 XML文件操作

    son_node.SetAttribute(att_name, att_value); son_node.InnerText = node_text; // 将新节点添加到父节点下 xmlDoc.SelectSingleNode(node_root).AppendChild(son_node); xmlDoc.Save(path); break; } } ...

    c#语言asp.net实现treeview控件读数据库动态生成树的代码

    node.setAttribute("Text", "hgknight"); TreeView1.add(node); } // 遍历所有子节点 var NodeArray = new Array(); NodeArray = TreeView1.getChildren(); for (var i = 0; i ; i++) { var cNode = NodeArray[i...

    web开发者的实用参考书

    - **示例**:`node.setAttribute('style', 'color:red')` 设置元素的颜色为红色。 3. **`node.nodeType`** - **功能**:读取节点类型。 - **返回值**: - `1` 表示元素节点。 - `3` 表示文本节点。 4. **`...

    CXml(XML VC操作类)

    3. **修改操作**:对节点进行修改,例如`node.SetAttribute("name", "value");`设置属性,`node.SetText("新的文本内容");`修改文本内容。 4. **创建和插入**:可以创建新节点并插入到XML树中,`XmlNode newNode = ...

    DOM的基本方法.txt

    const node1 = document.getElementById('node1'); const node2 = document.getElementById('node2'); swapNode(node1, node2); ``` 以上是DOM中的一些基本操作方法及其应用场景,熟练掌握这些方法能够帮助开发者更...

    利用asp连接xml添加修改删除

    newNode.setAttribute "position", "经理" xmlDoc.getElementsByTagName("employees")(0).appendChild newNode ``` 2. **修改数据**:找到要修改的节点,然后使用`nodeValue`或`setAttribute`改变其内容。比如我们...

    c#语言asp.net实现treeview控件读数据库动态生成树

    node.setAttribute("Text", "hgknight"); } ``` 4. **添加节点**: ```javascript function addNode() { var node = TreeView1.createTreeNode(); node.setAttribute("Text", "hgknight"); TreeView1.add...

    Js内置对象.docx

    newNode.setAttribute("id", "newDiv"); document.body.appendChild(newNode); ``` #### 七、Event对象 **Event对象**用于处理文档或用户界面中发生的事件。以下是Event对象的一些重要属性: - **keyCode**: 当前...

    delphi操作xml汇总

    Child_node.setAttribute('name', TStudent(List[i]).Name); // 添加子节点 Child_node.appendChild(OutXMLDoc.createTextNode(TStudent(List[i]).Age.ToString)); Child_node.appendChild(OutXMLDoc....

    详细介绍VC#的WebXML编程

    newNode.SetAttribute("Name", txtName.Text); newNode.SetAttribute("From", txtFrom.Text); newNode.InnerText = txtMessage.Text; xmldocument.DocumentElement.AppendChild(newNode); // 保存更改 xmldocument....

    DOM常用属性和方法

    - **setAttribute(name, value)**: 设置或修改指定属性的值。 - **removeAttribute(name)**: 删除指定属性。 - **getAttributeNode(name)**: 以Attr节点形式返回指定属性的值。 - **removeAttributeNode(attr)**: 从...

Global site tag (gtag.js) - Google Analytics