为啥即使显示正确,在获取 nodeValue 时 null 仍会不断返回?

Posted

技术标签:

【中文标题】为啥即使显示正确,在获取 nodeValue 时 null 仍会不断返回?【英文标题】:Why does null keep coming back when getting nodeValue even though it displays properly?为什么即使显示正确,在获取 nodeValue 时 null 仍会不断返回? 【发布时间】:2011-11-09 07:04:18 【问题描述】:

这让我发疯了。我正在通过 Ajax 将代码插入页面。插入代码后,我正在运行一个函数来获取其中一个 DIV 的文本并将其显示在页面上的另一个位置。

有人能告诉我为什么我总是收到一个 javascript 错误,说 currentText 为空,即使文本在页面的其他位置正确显示??

var currentText = document.getElementById("current-text"),
updatedTextHere = document.getElementById("updated-text-here");

updatedTextHere.innerhtml = currentText.firstChild.nodeValue;

这是它从中获取文本值的代码,它通过 Ajax 插入到主页中:

<div id="current-text" class="hide">January 1, 2011</div>

更新:

它的外观如下:

getDate = function () 
    var currentText = document.getElementById("current-text"),
    updatedTextHere = document.getElementById("updated-text-here");

    updatedTextHere.innerHTML = currentText.firstChild.nodeValue;
,

htmlready = function () 
    myDiv.innerHTML = xmlRequest.responseText;
    getDate();
,

【问题讨论】:

为什么不直接使用innerHTML?所以updatedTextHere.innerHTML = currentText.innerHTML;不知道为什么它不起作用。真奇怪。 这将有助于查看您用于创建此元素的 ajax 方法。 我更新了我的帖子,其中包含插入 Ajax 后如何调用它的示例。 【参考方案1】:

您遇到的问题是firstChild 不是currentText 的节点。您的 nodeValue 没有价值,因为它不存在。您应该改用innerHTMLtextContent

更改为...

updatedTextHere.innerHTML = currentText.firstChild.textContent; // or innerHTML

【讨论】:

谢谢,但我不知道如何纠正它,因为没有办法将回调传递给我的 JS Lib for Ajax 中的方法。你能看到用我上面提供的更新代码修复它吗? 实际上在查看了您更新的示例之后,您的范围很好。有关您的解决方案,请参阅上面我修改后的答案。

以上是关于为啥即使显示正确,在获取 nodeValue 时 null 仍会不断返回?的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS:为啥即使显示正确,我也会得到 NaN?

获取nodeValue时输出为null

即使正确刷新视图,为啥 NavigationLink 不会自动推送下一个控制器?

ManifestStaticFilesStorage - 即使 staticfiles.json 显示正确的映射,仍会获取旧的静态文件

为啥输入验证码时明明输入正确 却显示错误

PHP DOM:设置 nodeValue 时,代码未格式化,而是显示文字 HTML 标签