JS中的全局变量

时间:2010-09-13 08:56:32

标签: javascript

我知道ff与ie属性'class'之间存在差异。

我想把global.js放在那样的东西:

function GetVarByBrowser()
{
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var getClass= 'className';
  }
  else
  {
    var getClass= 'class';
  }

}

在页面中我添加了这个:

ElementServer.setAttribute(GetVarByBrowser(), 'server');

我怎样才能使它有效?

4 个答案:

答案 0 :(得分:2)

无需全局变量。让函数返回值:

function GetVarByBrowser()
{
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    return 'className';
  }
  else
  {
    return 'class';
  }

}

然而,由于多种原因,这是一种不完美的浏览器检测方法。您是否考虑使用像jQuery这样的库来自动处理这样的怪癖?或者你想自己学习(这是完美的,值得称道的)?

答案 1 :(得分:2)

最好只使用x.className getter / setter属性,这样可以避免需要调用属性函数,并且适用于所有浏览器。

答案 2 :(得分:0)

绝不使用浏览器检测!这将在IE8中以标准模式中断!

在这种情况下没有理由使用setAttributee.className = 'some_class'适用于所有浏览器。

答案 3 :(得分:-1)

我建议采用略有不同的方法:

var setClassAttribute(e, value);
if (navigator.appName == 'Microsoft Internet Explorer')
{
    setClassAttribute = function(e, value) {
        e.setAttribute('className', value);
    }
}
else
{
    setClassAttribute = function(e, value) {
        e.setAttribute('class', value);
    }
}

现在您可以像这样使用这个新功能:

setClassAttribute(ElementServer, 'server');