Javascript:IE8中的无效参数问题与变量对象属性

时间:2015-09-03 16:43:42

标签: javascript internet-explorer object

我正在尝试动态设置像这样的元素

var element = document.querySelector('.myElement');
var prop = 'left'; // this is incoming property variable computed by other code
var leftTop = ['left','top'];
var widthHeight = ['width','height'];



if (prop === 'left' || prop === 'top') {
   element.style[prop] = 20+'px'; // the condition determines that left/top property is to be used
} else {
   element.style[prop] = 40+'px'; // the condition determines that width/height property is to be used
}      

错误是:

  

SCRIPT87:参数无效。文件:script.js,行:275,列:5

我知道当条件满足时我可以使用element.style.left,IE8可以完成这项工作,但在我的情况下,数组变量包含20多个属性,我真的需要让它与element.style[prop]一起使用。

感谢您的任何建议或解决方案。

1 个答案:

答案 0 :(得分:1)

你需要放 var element = document.querySelector('.myElement'); window.onload。你现在所拥有的是在元素存在之前抓取.myElement。如果你需要保持全局,那么只需定义为:

var element;
window.onload = function(){
    element = document.querySelector('.myElement');
    if (prop === 'left' || prop === 'top') {
        element.style[prop] = 20+'px'; // the condition determines that left/top property is to be used
    } else {
        element.style[prop] = 40+'px'; // the condition determines that width/height property is to be used
    }   
};

提示错误:http://jsfiddle.net/a9fms3um/ 摆弄没有错误:http://jsfiddle.net/a9fms3um/1/ 还要确保该元素与页面上的该类确实存在。