我知道这是一个非常基本的JS问题,对不起。我对此很陌生。我一定在某个地方犯错了。这是我正在使用的东西:
HTML表单
<div class='nameinput'>Please enter your name:</div>
<input id='name1' placeholder='Name...' type='text'>
<input type='submit' value='Connect' class="submitForm">
</div>
JavaScript代码
function store() {
name = $("input#name1").val();
}
function init() {
$('.submitForm').on('click', function(){
if (name === '') {
alert("Please Enter Name");
}
else
store();
$(".login_page").animate({
'opacity': '0' });
我不确定这里缺少什么。 name = $("input#name1").val();
工作正常,但似乎无法正常工作。有人可以在这里解释我的问题吗?
答案 0 :(得分:2)
变量name
在范围内是undefined
。单击该按钮时需要获取它。将您的代码更改为以下内容:
function init() {
$('.submitForm').on('click', function() {
var name = $("#name1").val();
if (name === '') {
alert("Please Enter Name");
}
// rest of the code
}
此外,如果仅使用函数store
来初始化变量name
,则不需要该函数。此外,选择器input#name1
可以简化为#name1
,因为页面中的所有元素都应具有唯一的ID。
答案 1 :(得分:1)
我还是新手,并且可以通过多种方式学习JavaScript,所以请不要担心。
首先,您应该始终尝试尽可能地调试问题。一种简单的方法是简单地放入测试console.log()
语句以打印出相关的值,这样您就可以1)知道正在触发的内容和触发时间,以及2)它们正在使用的值。这样可以使您摆脱许多此类问题。
第二,我相信您的if语句(if (name === '') {
)是问题所在。您应该看看这个,问自己为什么不起作用?您的逻辑比较写错了吗?您在比较正确的事情吗?您正在比较哪些值?
您的问题是:name
在哪里定义?您在store()
中使用了它,但是它在该init
语句中的if
中第一次弹出。在此之前没有定义。
所以第一次触发时,那是不对的,它转到else
子句,然后然后 store()
触发。
在这种情况下,您已经失去了范围的了解;定义变量的位置。
最简单的解决方案是添加另一个语句以提取您要检查的输入的值,并确保它不是null / empty。因此,除非您有特定的用途,否则我根本不需要您store()
。