通常当我想改变组件的
style
时,我可以简单地在Delphi中做这样的事情:
Panel1.ElementHandle.style.setProperty('display','none');
但我想更改
Panel1
中具有 Test
类的第一个元素的样式。我可以使用 getElementsByClassName
函数获取该元素。该函数返回一个 TJSHTMLCollection
对象,它基本上是一个数组,我可以执行以下操作来从数组中获取第一项:
Panel1.ElementHandle.getElementsByClassName('Test')[0]
但这会返回一个
TJSNode
元素,并且 TJSNode
上没有像 style
那样的 ElementHandle
。所以我无法执行以下操作,因为这会导致错误,因为 style
不存在:
Panel1.ElementHandle.getElementsByClassName('Test')[0].style.setProperty('display','none');
那么,如果我想更改
style
对象中这些 TJSNode
项目之一的 TJSHTMLCollection
,我该怎么办?
好吧,我刚刚发现我可以简单地将
TJSNode
转换为 TJSHTMLElement
,这就是 ElementHandle
返回的内容,然后我就可以访问它上面的 style
:
var
TestElement: TJSHTMLElement;
begin
TestElement := TJSHTMLElement(Panel1.ElementHandle.getElementsByClassName('Test')[0]);
TestElement.style.setProperty('display','none');
end;