Javascript 提示取消终止函数

Javascript prompt cancel terminates function

所以我有一个函数 prompt 向用户发送一个值 (element0) 并将该值与已经存在的值 (elementIJ.name) 进行比较。那部分工作正常,但问题来了:我希望函数在取消 prompt 时做一些不同的事情(就此而言,通过单击取消或按 Esc 键),但它看起来像函数终止。我已经使用 alert 进行了 运行 测试,但我的想法是实际做其他事情。这是我的代码:

var element0 = prompt('Enter element name').toUpperCase() ;
if ( element0 == null || element0 == '' || element0 == false || !element0 ) { alert('ALERT!') ; }
while ( element0 !== elementIJ.name.toUpperCase() )
  {
    element0 = prompt('Try again').toUpperCase() ;
    if ( element0 === null || element0 === '' || element0 === false ) { alert('ALERT!') ; }
  }
// ... do things for element0 === elementIJ.name.toUpperCase()

正如我所说,没有 if 语句的位工作正常,只是 prompt 取消没有。我一直在网上寻找答案,但似乎大多数人的问题与我的问题完全相反:他们希望取消以终止该功能...那么我做错了什么?

谢谢!

您不能在第一行执行 toUpperCase(),因为 element0 可能会被取消。试试这个:

编辑更好的答案:

这是一个我相信你正在尝试做的事情: 替换 'TEST'

function promptTest(){
    var element0 = prompt('Enter element name');
    if ( element0 == null || element0 == '' || element0 == false || !element0 ) { 
        alert('cancelled!')
        return false; 
    }
    else{
        return element0.toUpperCase();
    }

}

var promptVar = promptTest();
while (promptVar && promptVar !== 'TEST' )
{
    promptVar = promptTest();
}

旧答案:

var element0 = prompt('Enter element name');
if ( element0 == null || element0 == '' || element0 == false || !element0 ) { 
    alert('ALERT!') ; 
}
else{
    element0 = element0.toUpperCase()
    console.log("element0: " + element0)
    while ( element0 !== elementIJ.name.toUpperCase() )
    {
        element0 = prompt('Try again').toUpperCase() ;
        if ( element0 === null || element0 === '' || element0 === false ) { alert('ALERT!') ; }
    }
}