Javascript 从控制台显示数据属性值,但不使用脚本

Javascript 从控制台显示数据属性值,但不使用脚本,javascript,jquery,Javascript,Jquery,HTML <div id="result"> <!-- one of many choices --> <div data-votes="9"> <div class="meter"></div> Choice name <span>9 Votes</span> </div> </div> console.log中的命令均无效。而t

HTML

<div id="result">
    <!-- one of many choices -->
    <div data-votes="9">
        <div class="meter"></div>
        Choice name <span>9 Votes</span>
    </div>
</div>
console.log中的
命令均无效。而
total_vows
的值在该部分之后保持
0

偶数
console.log($('#result').find('>div').eq(0).data('vows'))不起作用并打印出
null

但若我在控制台中使用相同的代码,它就可以正常工作

> $('#result').find('>div').eq(1).data('votes')
15
> typeof $('#result').find('>div').eq(1).data('votes')
"number"

在编写代码时,
total\u vots
变量是
.each()
回调的局部变量,因此每次循环开始时都会重置该变量,循环结束时就会忘记该变量

您需要在循环之前初始化
total_vots

var total_votes = 0;

$('#result').find('>div').each( function () {

虽然代码还有一些其他问题,但问题似乎是时间问题,因为它在控制台中工作

确保代码仅在文档准备就绪时执行:

$(function () {
    //your code goes here
});

最后,如评论中所述,使用
.children(“div”)
而不是
.find(“>div”)
。您还可以仅通过使用
.children(“[数据投票]”)

控制台.log($(this).data('voates'))将具有此属性的子对象作为目标,并检查在您将
.eq(1)
.eq(0)
进行比较时,是否首先发生了这种情况;这只是一个复制粘贴错误吗?与您的问题无关,但您应该编写
$(“#result”).children(“div”)
而不是
$(“#result”)。查找(“>div”)
。后一种语法已经被弃用了一段时间。你确定在DOM就绪时执行代码吗?这个问题已经由海报解决,可以删除。我看不到循环中定义了
total_vots
。他说
total_vots
保持在0,所以我假设它已经初始化了。@epascarello它是在第一次使用时隐式定义的。是的,它是在
$('#result')之前声明和初始化的。find('>div')…
对于这种情况下的混淆,我深表歉意,请提供您在或其他地方的错误工作示例,以便我们可以查看所有相关代码以缩小问题范围。到目前为止,您提供的小样本没有问题。但是在我的代码底部,您可以看到它说
typeof
“number”
,那么为什么我需要使用
parseInt
?您不需要将
parseInt
一起使用
——它会自动将数字数据转换为数字类型。对,我从未意识到这一点。很方便。我已经删除了错误的声明。
$(function () {
    //your code goes here
});