2

以下のコードでは、のようにプロパティ値を指定するdoc.styleSheets[0].rules[0].style.fontweightと機能しますが、変数を渡すとエラーがスローされます。それはなぜです?

html =
(Ltrim
    <html>
    <head>
    <style type="text/css">
    div {
        font-weight: bold;
    }
    </style>
    </head>
    </html>
)

doc := ComObjCreate("HTMLfile") 
doc.write(html)
ChangeCSSRules(doc, "fontweight", "normal")
msgbox % doc.documentElement.innerHTML

ChangeCSSRules(doc, property, value) {
    doc.styleSheets[0].rules[0].style[property] := value    ; this causes "Error:  0x80020003 - Member not found."
    ; doc.styleSheets[0].rules[0].style.fontweight := "normal"  ; this works            
}   

[]を使用するとそのエラーが発生するようです。

html =
(Ltrim
    <html>
    <head>
    <style type="text/css">
    div {
        font-weight: bold;
    }
    </style>
    </head>
    </html>
)

doc := ComObjCreate("HTMLfile") 
doc.write(html)

doc.styleSheets[0].rules[0].style["fontweight"] := "normal" ; this causes "Error:  0x80020003 - Member not found."
; doc.styleSheets[0].rules[0].style.fontweight := "normal"  ; this works            
msgbox % doc.documentElement.innerHTML
4

1 に答える 1

1

私が知っているように、COMオブジェクトの一部のプロパティがパラメーターを受け入れることができるためです

あれは

既知の制限:

現在、xy[z]() は x["y", z]() として扱われますが、これはサポートされていません。回避策として、(xy)[z]() は最初に xy を評価し、次にその結果をメソッド呼び出しのターゲットとして使用します。xy[z].() は (xy[z]).() と同じように評価されるため、この制限がないことに注意してください。

このようにしてみてください

test:="fontweight"
(doc.styleSheets[0].rules[0].style)[test] := "normal"

それが役に立てば幸い

一番。

ブラックホーリーマン

于 2013-05-06T07:52:17.873 に答える