getAttribute(value) returns null even when the value exists when 运行 代码在本地

getAttribute(value) returns null even when the value exists when running the code locally

我正在尝试调试 ASP.Net 站点。代码是使用 Visual Studio 2012 调试的,并且在我的 Windows 10 机器上使用 IIS Express 在本地 运行ning。 Web 应用程序需要 运行 使用 Internet Explorer 11。

当我 运行 代码时,我在页面 JavaScript 中得到一个被 Visual Studio 捕获的异常(在下面未显示的一段代码中)。我知道代码已经投入生产并且 100% 有效。但是,当我在本地调试代码时,它无法按预期工作。

这是有问题的代码:

var elements = document.getElementsByTagName('input');
for(var i = 0; i < elements.length; i++) {
    var value = elements[i].getAttribute('value');
    //....
}

当我运行代码本地elements[i].getAttribute('value')returns空。但是,当我 运行 在生产中使用相同的代码时,它工作正常。当我调试代码时,我可以看到 elements[i] 有一个实际值存储在 "value" 属性中,但是上面的代码仍然 returns null.

不允许我更改代码(由于某些原因),并且由于我的同事能够 运行 使用相同的设置在他的机器上更改代码,我倾向于认为这是一种配置在我的机器上出现 Visual Studio 或其他问题。

我愿意接受任何关于可能是什么原因的建议。

我尝试测试了您的上述代码,它在 IE 11 浏览器中运行良好。

<!doctype html>
<html>
<head>
</head>
<body>
<input type="text" name="FirstName" value="abc"><br>
<input type="text" name="LastName" value="xyz"><br>
<script>
var elements = document.getElementsByTagName('input');
for(var i = 0; i < elements.length; i++) {
    var value = elements[i].getAttribute('value');
    console.log(value);
}
</script>
</body>
</html>

输出:

这可能是与缓存相关的问题。我建议您清除该站点的缓存或硬刷新页面,然后再次尝试检查结果。

如果问题仍然存在,请尝试提供有关该问题的更多详细信息。我们将再次尝试检查它。

经过更多搜索和与同事交谈后,我被建议在 Internet Explorer 中打开企业模式(工具 -> 企业模式)。

根据 this 文章,这会像在 IE8 中呈现的那样呈现页面。据我所知,它也解决了我遇到的问题。

我希望这对以后的人有所帮助。