Javascript 如何转换IEnumerable<;HtmlElement>;到一个固定的高度
我正在尝试使用VS2013中的Javascript 如何转换IEnumerable<;HtmlElement>;到一个固定的高度,javascript,c#,html,.net,Javascript,C#,Html,.net,我正在尝试使用VS2013中的WebBrowser控件在网页上输入文本。我的应用程序是用C.编写的。网页的Html不使用标准id,而是使用一种称为数据凝胶id。我相信这是创建网页的公司的习惯,但我对JavaScript还不太熟悉,无法确定。这意味着我不能使用GetElementsById()方法将我的应用程序指向特定的文本框。Html元素复制如下: <div class="rcPoint rcPointtext rcPointEditable" data-gel-id="gel_20" s
WebBrowser
控件在网页上输入文本。我的应用程序是用C.
编写的。网页的Html不使用标准id,而是使用一种称为数据凝胶id
。我相信这是创建网页的公司的习惯,但我对JavaScript还不太熟悉,无法确定。这意味着我不能使用GetElementsById()
方法将我的应用程序指向特定的文本框。Html元素复制如下:
<div class="rcPoint rcPointtext rcPointEditable" data-gel-id="gel_20" style="position: absolute; left: 25.9375%; top: 28.125%; font-size: 12%;">
我得到一个错误,说您不能显式地将IEnumerable转换为HtmleElement
所以我有几个问题:
IEnumerable
转换为Html元素?如果
那么,如何李>
var gelId = "gel_20"; // This is the id you know
var txtbox = ElementsByClass( doc2, "rcPoint rcPointtext rcPointEditable")
.FirstOrDefault(x => x.GetAttribute("data-gel-id") == gelId);
if (txtbox != null) {
// Found textbox do something with it
}
如果你知道“自定义id”,你可能应该试试这样的东西
var gelId = "gel_20"; // This is the id you know
var txtbox = ElementsByClass( doc2, "rcPoint rcPointtext rcPointEditable")
.FirstOrDefault(x => x.GetAttribute("data-gel-id") == gelId);
if (txtbox != null) {
// Found textbox do something with it
}
是的,您的方法返回一个元素序列,并且您试图用一个元素分配给一个变量。如果有多个元素具有正确的属性,您希望发生什么?ElementsByClass是复数。因此,您可以使用ElementsByClass(doc2,“rcPoint rcPointtext rcPointEditable”)[0](在末尾添加一个索引)中的任意一个元素将其声明为数组:HtmlElement[]txtboxs@jdweng:No,
ElementsByClass(doc2,“rcPoint rcPointtext rcPointEditable”)[0]
都不起作用,因为IEnumerable
没有索引器ElementsByClass(doc2,“rcPoint rcPointtext rcpointeditabiled”)。ElementAt(0)
或ElementsByClass(doc2,“rcPoint rcPointtext rcpointeditabiled”)。首先()
。如果不再次调用ToArray()
,将txtboxs
更改为数组也不会有帮助,因为该方法返回IEnumerable
,而不是HtmlElement[]
。是的,您的方法返回一个元素序列,并且您正试图用一个元素分配给变量。如果有多个元素具有正确的属性,您希望发生什么?ElementsByClass是复数。因此,您可以使用ElementsByClass(doc2,“rcPoint rcPointtext rcPointEditable”)[0](在末尾添加一个索引)中的任意一个元素将其声明为数组:HtmlElement[]txtboxs@jdweng:No,ElementsByClass(doc2,“rcPoint rcPointtext rcPointEditable”)[0]
都不起作用,因为IEnumerable
没有索引器ElementsByClass(doc2,“rcPoint rcPointtext rcpointeditabiled”)。ElementAt(0)
或ElementsByClass(doc2,“rcPoint rcPointtext rcpointeditabiled”)。首先()
。如果不再次调用ToArray()
,将txtboxs
更改为数组也不会有帮助,因为该方法返回IEnumerable
,而不是HtmlElement[]
。或者如果有两个元素具有相同的“数据凝胶id”属性(我想这永远不会发生),则使用SingleOrDefault抛出异常或者,如果有两个元素具有相同的“data gel id”属性(我想这永远不会发生),则使用SingleOrDefault抛出异常
var gelId = "gel_20"; // This is the id you know
var txtbox = ElementsByClass( doc2, "rcPoint rcPointtext rcPointEditable")
.FirstOrDefault(x => x.GetAttribute("data-gel-id") == gelId);
if (txtbox != null) {
// Found textbox do something with it
}