如何在Javascript中不包含属性

时间:2014-05-22 12:39:26

标签: javascript jquery internet-explorer flotr2

我想在运行时动态包含/删除属性。

我遇到的问题是,使用Flotr2 Jquery库,我发现在IE中似乎没有正确支持图例(属性)。由于时间的限制,我可以快速破解。

所以,这是我所拥有的代码的剥离版本,包括我的尝试

Flotr.draw(
    container, myArrayForGraph, {
        if (!IsThisIe()) {
            legend: {
                show: true,
                container: legendContainer
            },
        }

    });

如你所见,我想打电话给'IsThisIe()'如果返回false,则添加图例属性。

这不起作用,我假设当Javascript需要一个属性时我们无法做到这一点。消息是

SyntaxError: missing : after property id

我知道我可以创建两个不同的对象并具有类似

的东西
if (IsThisIe())
{
 Flotr.draw(
        container, myArrayForGraph, {
   ///etc
}
else
{
 Flotr.draw(
        container, myArrayForGraph, {
                legend:
//etc
}

但这是重复代码,每个对象都有很多属性。

那么,有没有办法不以我所描述的方式包含属性,或者我不得不在多个地方管理代码?

1 个答案:

答案 0 :(得分:3)

尝试:

var params = {
    // define properties that should be set in both cases
};
if( !IsThisIe()) {
    params.legend = {show:true,container:legendContainer};
}
Flotr.draw(container, myArrayForGraph, params);

然后找出为什么IE不喜欢你的代码 - 从错误控制台开始;)


我找到了这个bug。它是代码Flotr函数的一部分。找到定义Flotr.DOM.node的位置,并将其替换为:

node:function(e) {var t = Flotr.DOM.create("div"),n; t.innerHTML = e; n = t.children[0]; return n;}

如果您核对包含您所指的其他元素的元素的innerHTML,则IE不喜欢它。此修复可以防止出现此问题。