0

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

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

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

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

    });

如您所见,我想调用“IsThisIe()”,如果它返回 false,则添加 legend 属性。

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

SyntaxError: missing : after property id

我知道我可以创建 2 个不同的对象并拥有类似的东西

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

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

那么,有没有办法不以我描述的方式包含属性,或者我是否坚持必须在多个地方管理代码?

4

1 回答 1

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 不喜欢你的代码 - 从错误控制台开始;)


我发现了这个错误。它是 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 不喜欢它。此修复程序可防止该问题。

于 2014-05-22T12:44:06.920 回答