无法访问输入的checked属性

问题描述:

无法访问输入的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; 
 
}

+0

是什么控制台说? – binariedMe

+2

当你调试这个时,'id.checked'的价值是什么?什么是传递给这个函数的'id'? – David

+0

看起来不像你正在评估(id.checked)的任何东西。 – Stese

您将输入的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(我更喜欢前者)来检索对象。

+0

但我在控制台中获取id,但只是如果条件不起作用我点击时获取id –

+0

您在控制台中获取'id',因为它存在 - **作为字符串**。你不能说' .checked'因为字符串没有一个名为checked的属性。 –

+0

谢谢你的工作 –

这可能有助于

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>

+0

为什么downvote?它不能帮助解决问题吗? – sesamechicken