前几天工作中遇到一个js问题,本来js就不大会,倒腾了好长时间,并在做弹窗的时候用到了setAttribute,出现了不兼容的问题,在网上查了好多,真是郁闷,看来啥都得学啊。

主要的工作是做一个根据时间段变化图片的背景色,并在每一个时间段开始的同时同步进行倒计时,唉,两个分开来做都很好做,但是整合到一起的时候就麻烦了,倒计时的时候不会进行刷新......先说这个弹窗问题,在不是上述时间段的时候,不能购买产品,弹出一个弹窗来提示用户,我是用setAttribute做的,但是在做成效果之后,遇到了有些浏览器不兼容的问题。下面来说说:

本来写的代码是<a id="a1"><img src="" width="107" height="37" alt="" /></a>

<script>

function show(){......

document.getElementbyId("a1").href="#";

document.getElementbyId("a1").setAttribute("onclick","alert( '本时间段秒杀结束,请关注下一时间段!') ");

}

</script>

但是这样写后在tt中并没有弹窗,这就涉及到某些浏览器不是不支持setAttribute这个函数,而是不支持用setAttribute设置某些属性,例如对象、集合、事件属性等。为能够兼容多浏览器,可以用点符号来设置Element的对象、集合和事件属性。所以可以改为document.getElementbyId("a1").onclick=function(){corr();}

function corr(){alert("本时间段秒杀结束,请关注下一时间段!")}这样在tt中就可以看到弹窗了

还有一些其他的例如:document.getElementById("aa").className = "bordercss";                             document.getElementById("aa").style.cssText = "color: #00f;";                             document.getElementById("aa").style.color = "#00f";都可以将setAttribute换成点符号代替

setAttribute还存在一个样式兼容的问题:

setAttribute("class", value)中class是指改变"class"这个属性,所以要带引号,value为样式赋值。       例如:             var input = document.createElement("input");//创建一个Input控件,name为q,class为bordercss             input.setAttribute("type", "text");             input.setAttribute("name", "q");             input.setAttribute("class",bordercss);            使用setAttribute("class", value)语句动态设置Element的class属性在firefox中是可以的,但在IE中却不行。因为使用IE内核的浏览器不认识"class",要用"className"替代,同样,firefox 也不认识"className"。所以用下面的方法来兼顾二者:

getElementbyId("aa").setAttribute("class", value); //firefox             getElementbyId("aa").setAttribute("className", value); //ie 还有一个问题就是:

input的text,当将html赋值为某个div的innerHTML时,遇到一个现象,当在ff下时(IE下不存在此问题), 赋值后的innerHTML里不含有value,即当在文本框输入内容后,想将<input type=text name=input1 value=”aa”>赋值给div时,只会得到<input type=text name=input1>,这里总是会将value清除.这时用setAttribute就可以了,在input中加上:onkeyup="this.setAttribute(value,this.value)",即动态的将input控件加上value值,这时再将文本框赋值给div,value将不会被清空.

局部刷新的问题,有哪位大侠会,可否帮我留言?谢了

setAttribute一个兼容性问题的更多相关文章

  1. 写一个兼容性比较好的拖拽DEMO

    写一个兼容性比较好的拖拽DEMO 查看Demo 思路 div盒子 鼠标按下事件onmousedown 鼠标移动事件onmousemove,获得鼠标的坐标,将div移动至鼠标的当前坐标 鼠标抬起事件om ...

  2. js中setAttribute 的兼容性

    js中setAttribute 的兼容性class和className兼容方法: object.setAttribute("class","content") ...

  3. JS中setAttribute的兼容性问题(摘自leejersey)

    class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera ...

  4. setAttribute的兼容性

    class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera ...

  5. 一个兼容性比较好的图片左右滚动的js

    下载地址:http://www.cnblogs.com/RightDear/admin/Files.aspx 文件:shhds.rar

  6. JS setAttribute兼容

    问题和表现: 最近实践中遇到的问题,setAttribute()设置在IE7中,无法设置style等属性.这样就对设置样式带了很大的困扰,例如绑定点击事件来隐藏元素,setAttribute(”sty ...

  7. Javascript兼容性问题汇总

    一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念, 特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的ou ...

  8. js的一些兼容性易错的的问题

    一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念,特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的out ...

  9. [转载]强制不使用“兼容性视图”的HTML代码

    在IE8浏览器以后版本,都有一个"兼容性视图",让不少新技术无法使用.那么如何禁止浏览器自动选择"兼容性视图",强制IE以最高级别的可用模式显示内容呢?下面就介 ...

随机推荐

  1. Message,MessageQueue,Looper,Handler详解

    Message,MessageQueue,Looper,Handler详解   一.几个关键概念 1.MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方.每一个线程最 ...

  2. Android中的SQLite使用学习

    Android中的SQLite使用学习 SQLite是非常流行的嵌入式关系型数据库,轻载, 速度快,而且是开源.在Android中,runtime提供SQLite,所以我们可以使用SQLite,而且是 ...

  3. WAMP error: Forbidden You don't have permission to access /{you_app_name} on this server

    Forbidden You don't have permission to access /{you_app_name}on this server. 需要修改两处: wamp\bin\apache ...

  4. 关于在linux下清屏的几种技巧

    在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?下面笔者分享几种在linux下用过的清屏方法. 1.clear命令.这个命令将会刷新屏幕,本质上只是 ...

  5. 20个最受欢迎的Linux命令

    http://code.csdn.net/news/2819566 1.   以 root 帐户执行上一条命令 sudo !! 2.  利用 Python 搭建一个简单的 Web 服务器,可通过 ht ...

  6. P2P金融

    P2P金融又叫P2P信贷,是互联网金融(ITFIN)的一种.意思是:点对点. P2P金融指不同的网络节点之间的小额借贷交易(一般指个人),需要借助电子商务专业网络平台帮助借贷双方确立借贷关系并完成相关 ...

  7. Windows环境变量设置无效解决办法——DOS窗口设置环境变量

    公司配置的电脑是Win7,使用的账户并不是管理员账户,我在计算机->属性中设置环境变量无效. 后来在DOS窗口中设置环境变量成功. 1. set [环境变量名称]=[所有环境变量值]:set P ...

  8. 312. Burst Balloons

    题目: Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented ...

  9. C#AutoResetEvent和ManualResetEvent的区别

    一:终止状态和非终止状态 首先说说线程的终止状态和非终止状态.AutoResetEvent和ManualResetEvent的构造函数中,都有bool变量来指明线程的终止状态和非终止状态.true表示 ...

  10. TestNG超详细教程

    testNG官网:http://testng.org/doc/download.html howtodoinjava.com里的testNG教程,简单详细:http://howtodoinjava.c ...