<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;
}
答案 0 :(得分:2)
您将输入的id
作为字符串传递给您的函数,但您将其视为输入对象。而不是传递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检索对象(我更喜欢前者)。
答案 1 :(得分:-1)
这可能会有所帮助
const priceChange = (value, id) => {
// You need to get the element, not just use its ID
const checkbox = document.querySelector('#'+id);
if(checkbox.checked){
// Change price
console.log(checkbox.checked);
}
else{
// do something else
console.log(checkbox.checked);
}
}
<label><input type='checkbox' id='myCheckbox' onclick='priceChange(10, this.id)' /> Checkbox</label>