You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#使用foreach遍历HTML元素报错:无法操作object类型变量

解决foreach无法遍历GetElementsByTagName返回值的问题

这个问题我之前也碰到过!核心原因很明确:GetElementsByTagName实际返回的是HtmlElementCollection类型,但你把它存在了object变量里,编译器没法识别它的枚举器实现,自然就抛出了那个错误。

完全不用绕到HtmlElement = new div这类复杂方案,直接修正变量类型就能搞定:

// 直接声明为HtmlElementCollection类型,而非object
HtmlElementCollection divs = this.webBrowser1.Document.Body.GetElementsByTagName("div");
foreach (HtmlElement d in divs) {
    if (d.GetAttribute("className") == "_3576") {
        this.label2.Text = d.InnerText;
    }
}

如果因为某些场景必须保留object类型变量,也可以通过类型转换来解决:

object divs = this.webBrowser1.Document.Body.GetElementsByTagName("div");
// 强制转换为HtmlElementCollection后再遍历
foreach (HtmlElement d in (HtmlElementCollection)divs) {
    if (d.GetAttribute("className") == "_3576") {
        this.label2.Text = d.InnerText;
    }
}

额外提个小优化:如果你只需要第一个匹配的div元素,找到后可以直接跳出循环,避免不必要的遍历:

HtmlElementCollection divs = this.webBrowser1.Document.Body.GetElementsByTagName("div");
foreach (HtmlElement d in divs) {
    if (d.GetAttribute("className") == "_3576") {
        this.label2.Text = d.InnerText;
        break; // 找到目标元素后停止遍历
    }
}

内容的提问来源于stack exchange,提问作者ArGOO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:44:46