无法访问输入的checked属性
<input type="checkbox" onclick="price_change('<?=$service_new_price;?>',this.id)" <?php echo $checked ?> value="<?php echo $entityId; ?>" id="service-option-<?php echo $entityId; ?>" class="service-option" name="service-option[]">
其显示其他一切的时候,我就复选框点击我应该心存感激,如果有人帮我
function price_change(value, id) {
var x = document.getElementsByClassName('price')[0].innerHTML;
var n_price = x.replace(/[^\w\s.]/gi, '')
if (id.checked) {
var new_price = +n_price + +value;
console.log('checked');
} else {
var new_price = +n_price - +value;
console.log(id, 'uncheck');
}
//document.getElementsByClassName('price')[0].innerHTML = new_price;
//document.getElementsByClassName('price')[1].innerHTML = new_price;
}
您将输入的id
作为字符串传递给您的函数,但您正在处理它li关注输入对象。相反,经过id
的,传递对象本身:
onclick="price_change('<?=$service_new_price;?>',this)"
然后你就可以点到对象的属性:
function price_change(value, obj) {
var x = document.getElementsByClassName('price')[0].innerHTML;
var n_price = x.replace(/[^\w\s.]/gi, '')
if (obj.checked) {
var new_price = +n_price + +value;
console.log('checked');
} else {
var new_price = +n_price - +value;
console.log(id, 'uncheck');
}
}
编辑 为了解决关于能够看到价值的评论id
在控制台中:
您可以在控制台中看到id的值,因为它存在 - 作为一个字符串。你不能说<string>.checked
,因为字符串没有一个名为checked的属性 - 只有你的输入对象。
简单地说,传递对象,或基于您传入的id(我更喜欢前者)来检索对象。
但我在控制台中获取id,但只是如果条件不起作用我点击时获取id –
您在控制台中获取'id',因为它存在 - **作为字符串**。你不能说'
谢谢你的工作 –
这可能有助于
const priceChange = (value, id) => {
\t // You need to get the element, not just use its ID
const checkbox = document.querySelector('#'+id);
if(checkbox.checked){
\t // Change price
console.log(checkbox.checked);
}
else{
\t // do something else
console.log(checkbox.checked);
}
}
<label><input type='checkbox' id='myCheckbox' onclick='priceChange(10, this.id)' /> Checkbox</label>
为什么downvote?它不能帮助解决问题吗? – sesamechicken
是什么控制台说? – binariedMe
当你调试这个时,'id.checked'的价值是什么?什么是传递给这个函数的'id'? – David
看起来不像你正在评估(id.checked)的任何东西。 – Stese