Javascript 从控制台显示数据属性值,但不使用脚本
HTMLJavascript 从控制台显示数据属性值,但不使用脚本,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
<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
});