2010-07-09 71 views
0

我試圖讓一個數組等於另一個數組,像這樣:elementStyle[property] = styles[property];Javascript數組錯誤

,但我一直得到一個「無效的參數」的錯誤。

任何想法????

Addtional:

的代碼是關於:http://prototypejs.org/assets/2009/8/31/prototype.js。我感興趣的領域是:

setStyle: function(element, styles) { 
    element = $(element); 
    var elementStyle = element.style, match; 
    if (Object.isString(styles)) { 
    element.style.cssText += ';' + styles; 
    return styles.include('opacity') ? 
     element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; 
    } 
    for (var property in styles) 
    if (property == 'opacity') element.setOpacity(styles[property]); 
    else 
     elementStyle[(property == 'float' || property == 'cssFloat') ? 
     (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') : 
      property] = styles[property]; 

    return element; 
}, 

此代碼在Firefox和Chrome瀏覽器中運行良好,但在IE中無法運行。我收到一個無效的參數錯誤。

+2

你能發佈代碼嗎?有很多可能的選擇,並且沒有看到代碼,你可能永遠得不到正確的答案。 – Oded 2010-07-09 15:52:35

+0

'property'從哪裏來? – Gumbo 2010-07-09 15:52:42

+0

屬性是一個數字值嗎? – 2010-07-09 15:53:47

回答

0

el.style屬性是一個對象,而不是一個Array ...順便說一句,在webkit中它不是可枚舉的...... 如果您嘗試迭代樣式屬性,請嘗試使用固定列表。

props = ('backgroundColor borderBottomColor borderBottomWidth borderLeftColor borderLeftWidth '+ 
     'borderRightColor borderRightWidth borderSpacing borderTopColor borderTopWidth bottom color fontSize '+ 
     'fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop maxHeight '+ 
     'maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft '+ 
     'paddingRight paddingTop right textIndent top width wordSpacing zIndex').split(' '); 
for (var i=0, len=props.length; i<len; i++) 
     element.style[props[i]] = styles[props[i]]; 

另一個典型的錯誤是,當你要訪問的下邊框寬度,則必須更換/ - ([AZ])/ G爲大寫字母...

4

糾正我,如果我m錯了,但是如果你像一個數組一樣傳遞一個對象到樣式中,那麼for(var在樣式中的屬性)將返回函數,條件不檢查它。

你會希望把在檢查你的後:

for (var property in styles) 
    if (typeof property == "string") // should filter out functions/objects/etc. 

我不知道這是否是你錯誤的原因是什麼,但。我不確定如果你嘗試給element.style分配一個函數會發生什麼。