当所有输入都是数字时,我一直得到 Nan
I keep getting the Nan when all inputs are numbers
首先我会说我知道有很多这样的问题但没有解决我的问题。
我目前正在 javascript 中为网络应用程序制作一个计算器,我将 运行 作为输出保存到 NaN 中,我不确定为什么,这里是代码 html 首先是 js.. ..
//number of attendees
const num = document.getElementById('attendees').value;
//The percentage that need a place to stay
const per = document.getElementById('percentage').value;
//How many days the event is for
const _eventLength = document.getElementById('eventLength').value;
//The number of people needing rooms
const _percentage = (num, per) => {
return (num / 100) * per;
};
//Room nights booked
const nightsBooked = (_percentage, _eventLength) => {
document.getElementById("res1").innerHTML = percentage * _eventLength;
};
document.addEventListener('click', _percentage, false);
document.addEventListener('click', nightsBooked, false);
<form action="calculator.js" method="get">
<label for="attendees">How many people will be attending your event?(include staff and anyone else involved!)</label>
<input type="text" id="attendees">
<br>
<label for="percentage">What percentage need a place to stay?</label>
<input type="text" id="percentage">
<br>
<label for="eventLength">How many days is your event?</label>
<input type="text" id="eventLength">
<br>
<p id="res1" style="border: solid 1px; width: 200px; height: 20px;"></p>
<button type="button" id="calbut1">></button>
</form>
如您所见,一切都已正确链接,这一定是我错误地遗漏了一小段代码,如果是的话,我会删除它,但是如果有人可以解释为什么这不起作用,如果您需要我,也请告诉我用代码笔或其他东西搞砸它,这样你就可以看到它的运行情况
您在一开始就赋值,none 个输入元素在该点具有值。然后在整个计算过程中使用这些“非值”变量,并且不出所料,将产生一个非数值...假设在单击按钮时得出最终数字,然后可以分配一个事件处理程序来进行计算奇怪的是,单击 document
本身时,而不是立即单击。
const nightsBooked = () => {
const attendees = Number(document.getElementById('attendees').value);
const percentage = Number(document.getElementById('percentage').value);
const eventLength = Number(document.getElementById('eventLength').value);
const calcpercentage = () => {
if( !isNaN( attendees ) && !isNaN( percentage ) ){
return ( attendees / 100 ) * percentage;
}
return 0;
};
document.getElementById("res1").innerHTML = calcpercentage() * eventLength;
};
document.getElementById('btn').addEventListener('click', (e)=>{
nightsBooked();
});
<form method="get">
<label for="attendees">How many people will be attending your event?(include staff and anyone else involved!)</label>
<input type="text" id="attendees">
<br>
<label for="percentage">What percentage need a place to stay?</label>
<input type="text" id="percentage">
<br>
<label for="eventLength">How many days is your event?</label>
<input type="text" id="eventLength">
<br>
<p id="res1" style="border: solid 1px; width: 200px; height: 20px;"></p>
<button type="button" id="btn">></button>
</form>
首先我会说我知道有很多这样的问题但没有解决我的问题。 我目前正在 javascript 中为网络应用程序制作一个计算器,我将 运行 作为输出保存到 NaN 中,我不确定为什么,这里是代码 html 首先是 js.. ..
//number of attendees
const num = document.getElementById('attendees').value;
//The percentage that need a place to stay
const per = document.getElementById('percentage').value;
//How many days the event is for
const _eventLength = document.getElementById('eventLength').value;
//The number of people needing rooms
const _percentage = (num, per) => {
return (num / 100) * per;
};
//Room nights booked
const nightsBooked = (_percentage, _eventLength) => {
document.getElementById("res1").innerHTML = percentage * _eventLength;
};
document.addEventListener('click', _percentage, false);
document.addEventListener('click', nightsBooked, false);
<form action="calculator.js" method="get">
<label for="attendees">How many people will be attending your event?(include staff and anyone else involved!)</label>
<input type="text" id="attendees">
<br>
<label for="percentage">What percentage need a place to stay?</label>
<input type="text" id="percentage">
<br>
<label for="eventLength">How many days is your event?</label>
<input type="text" id="eventLength">
<br>
<p id="res1" style="border: solid 1px; width: 200px; height: 20px;"></p>
<button type="button" id="calbut1">></button>
</form>
如您所见,一切都已正确链接,这一定是我错误地遗漏了一小段代码,如果是的话,我会删除它,但是如果有人可以解释为什么这不起作用,如果您需要我,也请告诉我用代码笔或其他东西搞砸它,这样你就可以看到它的运行情况
您在一开始就赋值,none 个输入元素在该点具有值。然后在整个计算过程中使用这些“非值”变量,并且不出所料,将产生一个非数值...假设在单击按钮时得出最终数字,然后可以分配一个事件处理程序来进行计算奇怪的是,单击 document
本身时,而不是立即单击。
const nightsBooked = () => {
const attendees = Number(document.getElementById('attendees').value);
const percentage = Number(document.getElementById('percentage').value);
const eventLength = Number(document.getElementById('eventLength').value);
const calcpercentage = () => {
if( !isNaN( attendees ) && !isNaN( percentage ) ){
return ( attendees / 100 ) * percentage;
}
return 0;
};
document.getElementById("res1").innerHTML = calcpercentage() * eventLength;
};
document.getElementById('btn').addEventListener('click', (e)=>{
nightsBooked();
});
<form method="get">
<label for="attendees">How many people will be attending your event?(include staff and anyone else involved!)</label>
<input type="text" id="attendees">
<br>
<label for="percentage">What percentage need a place to stay?</label>
<input type="text" id="percentage">
<br>
<label for="eventLength">How many days is your event?</label>
<input type="text" id="eventLength">
<br>
<p id="res1" style="border: solid 1px; width: 200px; height: 20px;"></p>
<button type="button" id="btn">></button>
</form>