gpt4 book ai didi

javascript - HTML5 data-* 属性类型转换字符串和数字

转载 作者:IT王子 更新时间:2023-10-29 03:12:29 24 4
gpt4 key购买 nike

为什么将 data-value="2.0" 的值转换为字符串,将 data-value="2.5" 的值转换为数字?我可以在我的职能范围内很好地处理这个问题。我只是想更多地了解 Javascript 如何处理数字和字符串。这让我措手不及。

<a data-value="2.0">2.0</a>
<a data-value="2.5">2.5</a>
$("a").click(function() {
alert(typeof $(this).data( "value"));
});

[ Fiddle With It ]

最佳答案

这些值只是原始 javascript 的字符串;它不会自行尝试任何转换。

[...document.querySelectorAll("a")].forEach(a =>
console.log("type: %s, value: %o",
typeof a.dataset.value,
a.dataset.value)
);
<a data-value="2.0">2.0</a>
<a data-value="2.5">2.5</a>

另一方面,jQuery 在通过 data() 访问数据属性时尝试确定并转换为适当的类型.这(可以说)是他们实现的一个问题。他们的documentation (强调我的)实际上解决了这个问题:

Every attempt is made to convert the string to a JavaScript value (this includes booleans, numbers, objects, arrays, and null). A value is only converted to a number if doing so doesn't change the value's representation. For example, "1E02" and "100.000" are equivalent as numbers (numeric value 100) but converting them would alter their representation so they are left as strings. The string value "100" is converted to the number 100.

另见 HTMLElement.<a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset" rel="noreferrer noopener nofollow">dataset</a>

关于javascript - HTML5 data-* 属性类型转换字符串和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com