[JavaScript+DOM+CSS]:奇遇小结一二

        写这篇目的,是想把在Web前端编程时遇到的一些“纳闷问题”记录下来;并将找到的解决方法及应对技巧总结归纳;以便以后查找使用。想来想去不知叫什么题目比较合适,就叫这个了。想以后遇到“纳闷问题都会补充进来吧”。也欢迎大家讨论,补充;把自己遇到的奇怪的前端问题贴出来。闲话不说了,这两天利用空闲之际想做个弹出层对话框。在这过程中遇到了几个问题,暂且先记下两个问题及解决方法。

 问题一、想试图通过Javascript设置某元素style的float属性。我们使用Javascript操作css属性的写法是有一定的规律的:

          1、对于没有中划线的css属性一般直接使用style.属性名即可。如:obj.style.margin、obj.style.width、obj.style.left、obj.style.position等。

          2、对于含有中划线的css属性,将每个中划线去掉并将每个中划线后的第一个字符换成大写即可。如:obj.style.marginTop、obj.style.borderLeftWidth、obj.style.zIndex、obj.style.fontFamily等。

       这个规律我想大多数的前端开发者也都熟知。但在css中有一个特殊的属性其js使用方法比较特殊。这个特殊的属性就是:float。我们不能直接使用obj.style.float来使用,这样操作是无效的。其正确的使用方法是为:IE:obj.style.styleFloat其他浏览器:obj.style.cssFloat

问题二、通过Javascript使动态添加到页面里的iframe的边框、边线去掉,不想看到。

        为了达到目的,我们一般都会想到通过 iframeObj.frameBorder = "0";  [0:无边框、1:有边框],但事实这样做了,有些浏览器是没有了,我在Chrome 11.0.696.68看,达到了想要的效果(火狐中没测,应该正常);可是在IE 8中死活还是有的, 就是没效果;为什么呢?我又一次纳闷了。通过style.border = "0"; 还是不行,百度吧。一查,果然有同仁遇到跟我一样的问题。并且给出解决方法。在这里谢谢那位同仁。他的解决方法:var iframe = document.createElement('iframe'); iframe.setAttribute('frameborder', '0', 0);后面那个'0'表示是否区分大小写。他说原因:“DOM里面的属性都是大写的,也就是说上面这段代码,在IE里面最后会变成:< IFRAME frameBorder=0... 由于IE认大写的,所以”frameborder“ 它自然不认。”方法凑效,但原因不太明白。又搜出值得一读的关于译自W3C DOM Level 1中关于setAttribute方法的说明,内容不多,就贴出来了。

具体的方法参数如下:
object.setAttribute(sName, vValue [, iFlags])

参数:
    sName:必填项. String类型,属性名
    vValue:必填项. 为属性指定的变量,可以为string, number, 或者 Boolean类型
    iFlags:选填. 下面指定的两种 Integer 类型的标志;0:覆盖同名、1:默认值,为属性添加指定值。

返回值:无。

备注:
如果指定的属性不存在,该方法讲为object添加新属性及值。
注意,当拼写属性名时. 如果 iFlags 设置成 1 并且 指定的sName 参数在该属性上没有相同名字时(包括大小写), object讲为之创建新属性。
如果object有两个或多个相同的属性名, 仅在值上不同时, iFlags设为 0, 该方法仅保存第一个被创建属性的值,其她的同名属性将被忽略。
使用该方法设置 CLASS 属性时, 请将sName 设为 "className",以符合Dynamic HTML (DHTML) 特性.(其实"className"仅适合在IE下使用,FF下要用"class")。

 

另外有个技巧:就是通过 “var iframe = document.createElement('iframe');这样创建的元素,在VS2008中通过智能感知是点不出属性或者事件来的。如果你要想知道某个属性或者事件;你大可在页面拖个你要创建的那个类型的元素;然后通过var dialogSrcIframe = document.getElementById("dialogIframe"); dialogSrcIframe.src = url;就可以通过智能感知点出属性或者事件进行赋值等操作,然后直接替换对象名就可以了。

 

O(∩_∩)O~

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的小壁虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值