【问题标题】:Getting undefined when trying to retrieve value of the element on the page尝试检索页面上元素的值时未定义
【发布时间】:2018-12-17 10:38:46
【问题描述】:

我对 JavaScript 很陌生,无法理解为什么下面的代码在尝试执行控制台日志时返回 undefined

casper.getVersionOfDocs = function getVersionOfDocs() {
    casper.then(function(){
        var listItems = this.evaluate(function () {
            var nodes = document.querySelectorAll('#cp-search-facets > div > div.panel-pane.pane-search-facet-product-version > div > div > ul > li');
            return [].map.call(nodes, function(node) {
                return {
                    text: node.nodeValue
                };
            });
        });
        for(index = 0; index < listItems.length; index++){
            console.log(listItems[index]["value"]);
        };
    });
};

输出:

undefined
undefined
undefined
undefined
undefined
undefined
undefined
undefined

【问题讨论】:

  • 先尝试控制台日志console.log(listItems[index])
  • 是的,已经完成了,它返回 nodeList : [object Object]
  • 这是因为 listItems[index] 对象中没有“value”属性。
  • 是的,验证了: 将 querySelector 更改为:'input.versionFilter.status-stable'

标签: javascript casperjs


【解决方案1】:

在您的代码中,您正在创建一个包含text 属性的对象。但随后您尝试读取属性“值”。

用它改变你的for循环,它应该没问题。

    for(index = 0; index < listItems.length; index++){
        console.log(listItems[index]["text"]);
    };

【讨论】:

  • 已更改:` value: node.nodeValue` 我只想要元素中的值,不再发生此未定义的错误,但我得到空白输出。
  • 我不知道你想做什么,但你可能不是你要找的nodeValue。你应该改用textContent
  • 可以在map函数中设置一个断点,从节点看需要什么
猜你喜欢
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 2017-02-03
相关资源
最近更新 更多