我正试图将data-isAdmin切换为true并在切换循环中返回,以下是我的代码:
<div id="is-admin" data-isAdmin="false" onclick="toggleIsAdmin();">
NOT Admin
</div>
<script>
toggleIsAdmin() {
let item = document.getElementById('is-admin').getAttribute('data-isAdmin');
item2 = Boolean(item);
alert(item2); // ==> true
alert(!item2); // ==> false
}
</script>
应该返回false,翻转后返回true。
我需要字符串"false"被Boolean()函数理解为false而不是true。它的字面拼写是f al s e,而不是t r u e。
如果Boolean()无法理解,将解释任何字符串,甚至是像"这样的空字符串如果为真,那么还有什么函数可以理解字符串& false"作为false,字符串"true"是真的吗?
或者有更简单的方法来切换它?
我期望Boolean()函数能够理解"false">
让事情简单化:
我建议使用data-is-admin
而不是data-isAdmin
。真的没有理由引入像lodash
这样的重依赖来实现如此简单的逻辑。让你的代码简单,易于维护,避免代码"魔术"…
function toggleIsAdmin() {
const element = document.getElementById( 'is-admin' );
if ( !element ) {
throw new Error( 'failed to find element' );
}
if ( element.dataset.isAdmin && element.dataset.isAdmin === 'true' ){
alert( true );
} else {
alert( false );
}
// If you care for one-liners...
// alert( element.dataset.isAdmin === 'true' );
}
如果你想的话,你也可以写一个解析函数,它可以被扩展来支持其他类似真值的值。
function parseBool( boolStr ){
if ( boolStr === 'true' ) {
return true;
}
return false;
}