setAttribute一个兼容性问题
前几天工作中遇到一个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一个兼容性问题的更多相关文章
- 写一个兼容性比较好的拖拽DEMO
写一个兼容性比较好的拖拽DEMO 查看Demo 思路 div盒子 鼠标按下事件onmousedown 鼠标移动事件onmousemove,获得鼠标的坐标,将div移动至鼠标的当前坐标 鼠标抬起事件om ...
- js中setAttribute 的兼容性
js中setAttribute 的兼容性class和className兼容方法: object.setAttribute("class","content") ...
- JS中setAttribute的兼容性问题(摘自leejersey)
class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera ...
- setAttribute的兼容性
class和className兼容方法: object.setAttribute("class","content") 在IE8.Chrome.火狐.Opera ...
- 一个兼容性比较好的图片左右滚动的js
下载地址:http://www.cnblogs.com/RightDear/admin/Files.aspx 文件:shhds.rar
- JS setAttribute兼容
问题和表现: 最近实践中遇到的问题,setAttribute()设置在IE7中,无法设置style等属性.这样就对设置样式带了很大的困扰,例如绑定点击事件来隐藏元素,setAttribute(”sty ...
- Javascript兼容性问题汇总
一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念, 特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的ou ...
- js的一些兼容性易错的的问题
一.属性相关 我们通常把特征(attribute)和属性(property)统称为属性,但是他们确实是不同的概念,特征(attribute)会表现在HTML文本中,对特征的修改一定会表现在元素的out ...
- [转载]强制不使用“兼容性视图”的HTML代码
在IE8浏览器以后版本,都有一个"兼容性视图",让不少新技术无法使用.那么如何禁止浏览器自动选择"兼容性视图",强制IE以最高级别的可用模式显示内容呢?下面就介 ...
随机推荐
- magento后台无法登陆的问题
解决方法: 打开 magento/app/code/core/Mage/Core/Model/Session/Abstract/varien.php 将// set session cookie pa ...
- 重载和覆盖的区别?(overload vs override)
override与overload的区别? override 表示重写,overload 表示重载.override是子类和父类之间的关系,是垂直关系:overload是同一个类中方法之间的关系,是水 ...
- angularJS之$apply()方法
这几天,根据buddy指定的任务,要分享一点angular JS的东西.对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的阻力还真是不少.不 ...
- mysql使用过程中碰到的问题
start job failed to start mysql ubuntu 原因时我将var整个目录的组权限设置为www-data了, 试了网上的办法都不行(有个妥协方法是重新安装, 但很不好), ...
- ffplay 中filter的使用
添加字幕:ffplay -vf drawtext="fontfile=arial.ttf: text='Test Text': x=100: y=300: \ fontsize=48: fo ...
- @RequestBody 的正确使用办法
1.以前一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是 ...
- nasm fasm yasm 还是masm、gas
留个爪,稍后学习 选择编译器nasm?fasm?yasm?还是masm.gas或其他? 前面三个是免费开源的汇编编译器,总体上来讲都使用Intel的语法.yasm是在nasm的基础上开发的,与nasm ...
- http://blog.csdn.net/xiamizy/article/details/40781939
http://blog.csdn.net/xiamizy/article/details/40781939
- UML系列02之UML类图(1)
类图介绍 类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间关系的示意图.它形象的描述出了系统的结构,帮助人们理解系统.类图是在"所有的 ...
- Linux系统安装MySQL步骤及支持远程操作配置方法
一.数据库安装(安装在/usr/local目录) 1. 压缩包拷贝到/users/lengyufang/tools 2. groupadd mysql3. useradd -r -g mysql -s ...