编程论坛's Archiver

ikonglin 发表于 2008-4-26 11:38

怎样用网页的宽度减去层的宽度

<div id="div1" style="position:absolute;width:300">
我用document.body.width-div1.style.width怎么不能得出结果,测试div1.style.width的值是300px,怎样才能把px去掉,变成数值参加运算

kingyar 发表于 2008-4-26 18:14

如果你需要从"300px"中得到数值"300",使用:parseInt就可以。例如:
parseInt(div1.style.width)

但你现在直接使用元素的style属性中的width属性取得元素宽度,这种做法存在问题:如果div元素是通过class或id使用外部的CSS样式表,那么在程序中读取div.style.width时,读到的值是一个空字符串。

较好的解决办法:
1. 获取窗口宽度:
function getWindowWidth()
{
        var windowWidth;
       
        if (self.innerHeight) {        // all except Explorer
                if(document.documentElement.clientWidth){
                        windowWidth = document.documentElement.clientWidth;
                } else {
                        windowWidth = self.innerWidth;
                }
        } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
                windowWidth = document.documentElement.clientWidth;
        } else if (document.body) { // other Explorers
                windowWidth = document.body.clientWidth;
        }       
   
    return windowWidth;
}

2 获取元素宽度:(源自prototype)
  function  getElemWidth(element)
{
        var display = element.style.display;
        if (display != 'none' && display != null) // Safari bug
          return element.offsetWidth;
       
        // All *Width and *Height properties give 0 on elements with display none,
        // so enable the element temporarily
        var els = element.style;
        var originalVisibility = els.visibility;
        var originalPosition = els.position;
        var originalDisplay = els.display;
        els.visibility = 'hidden';
        els.position = 'absolute';
        els.display = 'block';
        var originalWidth = element.clientWidth;
        els.display = originalDisplay;
        els.position = originalPosition;
        els.visibility = originalVisibility;
        return originalWidth;
}

通过以上两种发法分别获取窗口宽度和元素宽度,会更加可靠。

ikonglin 发表于 2008-4-26 18:18

谢谢,好好学习一下

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.