我有一个id =“ availableSeats”的跨度和一个id =“ confirmButton”的按钮。 我想检查availableSeats是否大于0,然后将禁用的属性删除到confirmButton。
这不起作用:
function checkSeats() {
var freeSeats = document.getElementById("availableSeats").value;
if ( !(freeSeats > 0)) {
document.getElementsById("confirmButton")[0].removeAttribute("disabled", "disabled");
}
答案 0 :(得分:2)
一些问题:
由于您的元素是span
,因此应使用textContent
属性。
要将该值解释为数字,应将字符串转换为数字
getElementById
是单数(没有s
,没有数组)。
removeAttribute
方法仅接受一个参数。
function checkSeats() {
var freeSeats = document.getElementById("availableSeats").textContent;
// ^^^^^^^^^^
if (+freeSeats > 0) {
// ^^
document.getElementById("confirmButton").removeAttribute("disabled");
// ^^ ^^ ^^^^^^^^
}
}
checkSeats();
<span id="availableSeats">10</span>
<button id="confirmButton" disabled>confirm</button>
答案 1 :(得分:1)
访问输入值时,其类型为字符串。您需要使用Number(value)或parseInt(number)
将其转换为数字if (parseInt(freeSeats) > 0) {
document.getElementsById("confirmButton")[0].removeAttribute("disabled", "disabled");
}
答案 2 :(得分:0)
您可以尝试
if ( parseInt(freeSeats) > 0) {
document.getElementById('confirmButton').disabled = false;
}
答案 3 :(得分:-1)
您正在比较span
元素的值,除非您为其分配值,否则该元素没有值。将其设置为input
标签,即可正常使用。
例如:<input id="availableSeats" type="number">
有人可以在其中输入数字,然后当该人按下按钮时,它将使用输入的值来运行您的代码。
答案 4 :(得分:-1)
从输入元素获取的值始终是字符串,因此在比较之前必须使用parseInt
或parseFloat
将值转换为数字。
function checkSeats() {
var freeSeats = document.getElementById("availableSeats").value;
if (parseInt(freeSeats) > 0) {
document.getElementsById("confirmButton")[0].removeAttribute("disabled", "disabled");
}
}