我们经常需要在JavaScript中给Element动态添加各种属性,这可以通过使用setAttribute()来实现,这就涉及到了浏览器的兼容性问题。

setAttribute(string name, string value):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。

1、样式问题
setAttribute(class, value)中class是指改变class这个属性,所以要带引号。
  vName代表对样式赋值。
  例如:
  var input = document.createElement(input);
  input.setAttribute(type, text);
  input.setAttribute(name, q);
  input.setAttribute(class,bordercss);
  输出时:,即,input控件具有bordercss样式属性
注意:class属性在W3C DOM中扮演着很重要的角色,但由于浏览器差异性仍然存在。
使用setAttribute(class, vName)语句动态设置Element的class属性在firefox中是行的通的,但在IE中却不行。因为使用IE内核的浏览器不认识class,要改用className;
同样,firefox 也不认识className。所以常用的方法是二者兼备:

element.setAttribute(class, value);  //for firefox
element.setAttribute(className, value);  //for IE
 
2、方法属性等问题
例如:
var bar = document.getElementById(testbt);
bar.setAttribute(onclick, javascript:alert('This is a test!'););
这里利用setAttribute指定e的onclick属性,简单,很好理解。
但是IE不支持,IE并不是不支持setAttribute这个函数,而是不支持用setAttribute设置某些属性,例如对象属性、集合属性、事件属性,也就是说用setAttribute设置style和onclick这些属性在IE中是行不通的。

为达到兼容各种浏览器的效果,可以用点符号法来设置Element的对象属性、集合属性和事件属性。
document.getElementById(testbt).className = bordercss;
document.getElementById(testbt).style.cssText = color: #00f;;
document.getElementById(testbt).style.color = #00f;
document.getElementById(testbt).οnclick= function () { alert(This is a test!); }

由此延伸的问题:

一个input的text,当将html赋值为某个div的innerHTML时,遇到一个现象,当在firefox下时(IE下不存在此问题), 赋值后的innerHTML里不含有value,即当你在文本框输入内容后,你想将赋值给div时,只会得到,这里总是会将value清除.

这时,setAttribute起作用了,在input内加上:οnkeyup=this.setAttribute('value',this.value),即动态的将input控件加上value值,这时再将文本框赋值给div,value将不会被清空.

出处:http://webcenter.hit.edu.cn/articles/2009/05-16/05070500.htm

转载于:https://www.cnblogs.com/furenjian/articles/3242945.html

JavaScript中setAttribute用法相关推荐

  1. JavaScript中setAttribute用法详解

    setAttribute基本用法 element.setAttribute(attributename,attributevalue) setAttribute() 方法添加指定的属性,并为其赋指定的 ...

  2. JavaScript中setAttribute()和removeAttribute()的用法

    在Selenium 中会遇到用setAttribute()为元素增加属性以及用removeAttribute()为元素删除属性,下面总结下两者用法: JavaScript中setAttribute() ...

  3. JavaScript中foreach()用法及使用的坑

    JavaScript中foreach()用法及使用的坑 JavaScript中foreach是用于遍历数组的方法,将遍历到的元素传递给回调函数,遍历的数组不能是空的要有值. foreach 语法: [ ...

  4. javascript中in用法介绍

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. js中setAttribute用法详解

    jssetAttribute基本用法 element.setAttribute(attributename,attributevalue) setAttribute() 方法添加指定的属性,并为其赋指 ...

  6. JavaScript中onload()用法

    实例: 页面加载之后立即执行一段 JavaScript: <html><head><script>function load(){alert("页面已加载 ...

  7. javascript中document用法

    详细讲解JavaScript脚本语言的 document 对象者:整理对象属性 代码 document.title              //设置文档标题等价于HTML的<title> ...

  8. JavaScript中===的用法/编程语言中等号的理解

    等号 = 在编程语言中一般是用于赋值的,这个在初学C语言时曾经困扰了我一阵,只是死记硬背一个等号是赋值,将右边的值赋给左边的变量. 后来接触面向对象的语言时,对等号有了新的理解,等号右边是一个对象,等 ...

  9. javascript 中的innerHTML的用法

    javascript中innerHtml用法 2009-04-21 22:52 <html> <head> <script language="javascri ...

最新文章

  1. 1数字图像获取:1.1图像数字化
  2. 单个正态总体均值的区间估计_考研数学闭关修炼习题讲解(3536)统计、估计与检验...
  3. python毒酒检测_检测OpenSSL漏洞的脚本
  4. velocity显示List与Map的方法详细解析
  5. 对 SAP UI5 应用使用 uiveri5 执行测试的 ERR_CONNECTION_REFUSED 错误
  6. 推荐一个去除图片人物背景的工具Removebg
  7. LintCode 550. 最常使用的K个单词II(自定义set(可修改数据的优先队列) + map)
  8. 【BZOJ1026】windy数,数位DP
  9. 【Windows Phone设计与用户体验】关于移动产品的Loading用户体验的思考
  10. 我的世界服务器启动端怎么制作教程,我的世界怎样制作和运行服务器 详细制作教程一览...
  11. 读计算机专业买什么笔记本电脑好?你算问对人了
  12. python 加注拼音-python汉字注音
  13. PayPal如何提现,PayPal提现手续费是多少?
  14. 软件研发成本构成中的间接成本包括哪些?
  15. 计算机绘画社团活动教案,电脑绘画社团教案
  16. ubuntu 16.04登陆界面循环(输密码闪屏回到登陆界面)排查过程
  17. 互联网30年,总有人正年轻
  18. vmware workstation添加共享硬盘的步骤
  19. MHA-结合MySQL半同步复制高可用集群(Centos7)
  20. Github国内镜像网站

热门文章

  1. 【Linux网络编程】并发服务器的三种实现模型
  2. 计算机应用技术考试重点,复习资料:2020年江苏自考计算机应用技术考前重点练习:单项选择题二...
  3. 每天一道LeetCode-----括号匹配
  4. Linux下cron周期性计划任务
  5. linux命令查找行数命令,Linux中用grep命令来搜索单词及统计匹配的行数
  6. 我所理解的设计模式(C++实现)——策略模式(Strategy Pattern)
  7. [NOTE] WindowsLinux常用环境变量
  8. matplotlib.pyplot分区绘图
  9. pytorch 之 torch.eye()函数
  10. 为什么要学Access?