Javascript if语句给出了错误的输出
Javascript if语句给出了错误的输出,javascript,if-statement,parameters,boolean,Javascript,If Statement,Parameters,Boolean,window.onload=start; 函数start(){ document.getElementById(“kalk”).onclick=find; 发现(19999); } 函数查找(最小值、最大值){ var factor=document.getElementById(“高”).value; var factor2=document.getElementById(“tall2”).value; var x=系数*系数2; document.getElementById(“utskri
window.onload=start;
函数start(){
document.getElementById(“kalk”).onclick=find;
发现(19999);
}
函数查找(最小值、最大值){
var factor=document.getElementById(“高”).value;
var factor2=document.getElementById(“tall2”).value;
var x=系数*系数2;
document.getElementById(“utskrift”).innerHTML=x;
如果(x>=min&&x您将函数find
直接附加到click事件侦听器。该函数需要两个参数min
和max
:
function find(min, max)
但是,当单击发生时,作为事件侦听器,它只接收一个参数,即事件对象。因此,min
将成为事件对象,max
将是未定义的,而您的if
语句将不起作用。您可以通过在中记录min
和max
来检查这一点e> 在控制台上查找
将函数find
调用包装到另一个函数中,并将后者附加为事件侦听器:
document.getElementById("kalk").onclick = function(event) { // the event listener function recieves the event object as the only parameter (not that argument event here is not necessary, I just added it for explanation)
find(1, 90000); // when this function get executed (when a click happens) then call find with proper parameters
}
首先,你必须记住,HTML中的“T”代表“文本”。HTML中只有一种数据类型…字符串。当你从HTML中获取一个值,并想在JavaScript中将其用作数字时,你必须将其转换为一个数字
接下来,您的函数没有正确组织。find
不应该在页面加载后立即运行。您希望它在单击按钮时运行。这样一来,min
和max
值就会在您需要时传递
最后,当您实际计算一个乘积时,HTML静态地说“Sum”
请参阅评论中的其他最佳实践项目
帮派
T1
T2
芬恩·泰尔一世酒店
产品:
document.getElementById(“kalk”).onclick=result;
//只获取一次DOM引用,这样就不必重新扫描DOM
//每次单击该按钮时,都会为其设置。
//另外,只需引用元素本身,而不引用元素的属性(.value)
//元素,因为如果您只是引用属性并稍后决定
//如果需要其他属性,则必须重新扫描DOM以获取相同的属性
//通过这种方式,您可以维护对元素的引用,并可以
//随时获取您需要的任何财产。
var factor=document.getElementById(“高”);
var factor2=document.getElementById(“tall2”);
var product=document.getElementById(“utskrift”);
var msg=document.getElementById(“msg”);
函数查找(最小值、最大值){
//所有来自HTML的值都是字符串
//当需要数字时,显式地将它们转换为数字。
var x=parseInt(factor.value,10)*parseInt(factor2.value,10);
//.innerHTML用于指定包含HTML的字符串。
//它告诉HTML解析器为HTML解析字符串
//包括HTML,使用.textContent,它不会进行额外的解析。
product.textContent=x;
如果(x>=min&&xdocument.getElementById(“kalk”).onclick=find;
没有神奇地将1
和9999
作为参数传递。find(1,9999);
只调用一次。您调试过此代码吗?使用(hitF12
)和console.log(min,max)
来了解你通过了什么。天啊,非常感谢你,我已经花了半个小时在代码中查找我做错的地方了。谢谢你的回复和解释!哦,对不起,你看,我的项目用的是另一种语言,所以我可能忘了更改一些东西,我的错。我试着给他们parseInt,但没用ally。谢谢你让它工作。因为他正在使用乘法*
,这对他来说是一个隐含的过程。@ibrahimmahrir是的,但这不是一个好习惯(希望字符串值能自动转换)。这不是一种可扩展的编码方式。我完全同意。但我认为这掩盖了真正的问题。这是一个著名的问题,OP已经/将从这个与事件相关的问题中独立出来解决。你提到这一点很好,但我更喜欢它作为真正答案底部的注释,而不是作为第一条线索g看到上面写着:“让我们去问房间里的大象!”就像他们说的那样。