Javascript 使用if语句时无法获取正确显示的警报
在上周收到的帮助下,我能够获得此代码的不同版本。我正在学习,所以这次我决定使用for循环对其进行重构以遍历数组。在我添加一个“else”来提醒用户他们输入了错误的数据之前,这本身似乎工作正常 我看到在for循环中,它会循环它的迭代次数,但无论我将警报放在哪里,它似乎都会覆盖所有内容。无论输入什么,它都会首先弹出,然后您必须单击它5次,然后它才会显示阵列中的数据。 我对其他方法持开放态度,而不是只使用警报 我试着编写一个这样的函数,这样我就可以移动调用来测试:Javascript 使用if语句时无法获取正确显示的警报,javascript,Javascript,在上周收到的帮助下,我能够获得此代码的不同版本。我正在学习,所以这次我决定使用for循环对其进行重构以遍历数组。在我添加一个“else”来提醒用户他们输入了错误的数据之前,这本身似乎工作正常 我看到在for循环中,它会循环它的迭代次数,但无论我将警报放在哪里,它似乎都会覆盖所有内容。无论输入什么,它都会首先弹出,然后您必须单击它5次,然后它才会显示阵列中的数据。 我对其他方法持开放态度,而不是只使用警报 我试着编写一个这样的函数,这样我就可以移动调用来测试: function inVal
function inValidAlert(){
let cylFindInvalid =
document.getElementById("cylEnter").value.toUpperCase();
if(cylFindInvalid != cylArray.name){
let displayIt = document.getElementById("displayCyl");
displayIt.innerHTML = displayIt.innerHTML + "Enter a valid
cylinder type";
}
}
我将invalidAlert()放在ListCyclares函数内部,函数外部,等等…这给了我与编写警报相同的结果,但还是给了我一些练习
对于你们中的一些人来说,这似乎是一个不需要动脑筋的问题,但我正在学习Javascript,需要帮助来解决这个问题:)
显示的代码在没有alert语句的情况下工作。因此,用户在数组中输入一个具有“name”属性的圆柱体类型。LD、RD、GD等。。。
如果有效,则对象(数组中)中的数据将显示在屏幕上。
但是,如果看到无效条目,我希望弹出一个警告,显示“无效数据”或类似内容。弹出窗口将工作,但在错误的时间或多次点击清除它,如果在for循环内。如果使用“break”,则警报将覆盖整个If语句,并且无论输入什么都将触发
那么,我该如何让警报正常启动呢?也许for循环一开始就是错误的整体方法?如果我也需要发布我的HTML,请告诉我。我是新来的,正在努力学习这里的诀窍,请对我放松点
函数列表(){
let display=document.getElementById(“displayCyl”);
对于(var i=0;i“+cylArray[i]。品牌+
“
”+cylArray[i]。圆柱体+”
“+cylArray[i]。管脚+”
“+cylArray[i]。键入;
}否则{
警报(“输入有效的气缸类型”);
}
}
}
//用于在按钮使用一次后禁用该按钮的功能。
const setbutton=document.getElementById('button1');
setbutton.addEventListener('单击',禁用按钮);
函数disableButton(){
setbutton.disabled=true;
}
//函数,该函数将在单击时清除窗体和显示。
函数clearCyl(){
var cylDisplay=document.getElementById(“displayCyl”);
document.getElementById(“cylForm”).reset();
cylDisplay.innerHTML=“”;
setbutton.disabled=false;
}
//圆柱体类型属性显示为阵列内的单个对象。
变量数组=[{
姓名:‘LD’,
品牌:“施拉格,猎鹰”,
圆柱体:“无圆柱体”,
引脚:“6引脚”,
类型:'KIL'
},
{
名称:“RD”,
品牌:'Schlage Everest 29 S123(标准)',
圆柱体:“带圆柱体”,
引脚:“6引脚”,
类型:“FSIC”
},
{
姓名:'PD',
品牌:'Schlage Everest 29 S123(标准)',
圆柱体:“带圆柱体”,
引脚:“6引脚”,
类型:'KIL'
},
{
名称:“JD”,
品牌:“Schlage”,
圆柱体:“无圆柱体”,
引脚:“6引脚”,
类型:“FSIC”
},
{
名称:‘GD’,
品牌:“Schlage Everest 29 R系列键槽”,
圆柱体:“带圆柱体”,
引脚:“7引脚”,
类型:“SFIC”
}
];代码>在您的循环中,逻辑上它将始终至少发出5次警报。这是因为cylCompare
从不更改,因此它永远不会等于循环数组中的其他5.name属性。因此,cyccompare==cylArray[i]。name
只能在六次迭代中的一次中为真。因此,警报将连续显示5次
相反,您要做的是,如果用户输入从未与数组中的单个项匹配,那么您将希望说它无效。您可以先假设它无效,然后在找到任何匹配项后将其更改为有效:
function listCylinders() {
let display = document.getElementById("displayCyl");
let valid = false; // We assume this isn't valid
// You can move this outside of the loop, and trim in case the user entered spaces
let cylCompare = document.getElementById("cylEnter").value.toUpperCase().trim();
for (var i = 0; i < cylArray.length; i++) {
if (cylCompare == cylArray[i].name) {
valid = true; // We find a match in one of our array items, so it's valid
display.innerHTML = display.innerHTML + cylArray[i].name + ":" + "<br>" + cylArray[i].brand +
"<br>" + cylArray[i].cylinder + "<br>" + cylArray[i].pins + "<br>" + cylArray[i].type;
}
}
if(!valid) alert("Enter a valid cylinder type"); // If we never found a match then we alert
}
函数列表(){
let display=document.getElementById(“displayCyl”);
设valid=false;//我们假设这是无效的
//您可以将其移动到循环外部,并在用户输入空格时进行修剪
让cyCompare=document.getElementById(“cyCenter”).value.toUpperCase().trim();
对于(var i=0;i“+cylArray[i]。品牌+
“
”+cylArray[i]。圆柱体+”
“+cylArray[i]。管脚+”
“+cylArray[i]。键入;
}
}
if(!valid)alert(“输入有效的圆柱体类型”);//如果我们从未找到匹配项,那么我们将发出警报
}
太棒了,谢谢Spencer!这很有道理,我理解。非常感谢你的帮助。