Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript if语句给出了错误的输出_Javascript_If Statement_Parameters_Boolean - Fatal编程技术网

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&&x
document.getElementById(“kalk”).onclick=find;
没有神奇地将
1
9999
作为参数传递。
find(1,9999);
只调用一次。您调试过此代码吗?使用(hit
F12
)和
console.log(min,max)
来了解你通过了什么。天啊,非常感谢你,我已经花了半个小时在代码中查找我做错的地方了。谢谢你的回复和解释!哦,对不起,你看,我的项目用的是另一种语言,所以我可能忘了更改一些东西,我的错。我试着给他们parseInt,但没用ally。谢谢你让它工作。因为他正在使用乘法
*
,这对他来说是一个隐含的过程。@ibrahimmahrir是的,但这不是一个好习惯(希望字符串值能自动转换)。这不是一种可扩展的编码方式。我完全同意。但我认为这掩盖了真正的问题。这是一个著名的问题,OP已经/将从这个与事件相关的问题中独立出来解决。你提到这一点很好,但我更喜欢它作为真正答案底部的注释,而不是作为第一条线索g看到上面写着:“让我们去问房间里的大象!”就像他们说的那样。