Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何转换IEnumerable<;HtmlElement>;到一个固定的高度_Javascript_C#_Html_.net - Fatal编程技术网

Javascript 如何转换IEnumerable<;HtmlElement>;到一个固定的高度

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

我正在尝试使用VS2013中的
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元素?如果 那么,如何
  • 我是否正确使用了代码段?我的论点合法吗
  • 这是将我的应用程序指向文本框的最佳方式吗
  • 非常感谢您的帮助,如果还有什么我可以发布来帮助回答的,请告诉我

    如果您知道“自定义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
    }
    
    如果你知道“自定义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
    }