我想在运行时动态包含/删除属性。
我遇到的问题是,使用 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/