我想在运行时动态包含/删除属性。
我遇到的问题是,使用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
}
但这是重复代码,每个对象都有很多属性。
那么,有没有办法不以我所描述的方式包含属性,或者我不得不在多个地方管理代码?
答案 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不喜欢它。此修复可以防止出现此问题。