javascript - 如何在 Javascript 中不包含属性

标签 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

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

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

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

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

最佳答案

尝试:

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 不喜欢这样。此修复可以防止该问题。

关于javascript - 如何在 Javascript 中不包含属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23807069/

相关文章:

javascript - Vanilla Javascript split(regex) 来匹配前面没有逗号的空格?

javascript - 是否可以一起使用 TypeScript 和 Babel

javascript - 语义 UI 动态下拉列表重新初始化问题

jquery - 如何动态调整大小以适合文本?

javascript - 解析,检查输入是否与 objectId 匹配

html - 渲染带有嵌套在其他表格中的半径边框的 html 表格单元格时的 IE 间隙

javascript - 如何使用 jQuery 判断网站访问者之前是否访问过该网站?

javascript - 如何正确处理 Webpack 和 jQuery 依赖项

javascript - 如何更改 HTML 元素样式,然后使用 JS 在 onLoad() 上恢复它?

internet-explorer - 通过 iron-router 导航到另一个页面后,Meteor Session 在 IE 9 中重置