[英]only my else if and else statements get evaluated, my if statement not
我正在制作2個按鈕,一個應該是白色主題,一個應該是黑色主題,這些將發送到我的數據庫中。 但是,當它應該評估我的if語句並在花括號內執行該部分時,會引發錯誤“未捕獲的ReferenceError:未定義數據”。
我已經使用過console.log(),並且一切似乎都正常。 我查找了其他與if / else if / else語句不起作用等有關的問題,但是對我來說,這些問題都不有用。
如何創建按鈕:
function whiteOrDarkTheme(id, value, text, classColor, tracker) {
let a = ($('<a/>', {
class: classColor + ' blackOrWhiteThemeBtns',
id: id,
value: value
})).text(text).on('click', function() {
if ($(this).attr('id') === 'darkTheme') {
$('#whiteTheme').val('NotChosen');
$(this).val('#282c34');
console.log($(this).val());
console.log($('#whiteTheme').val());
} else if ($(this).attr('id') === 'whiteTheme') {
$('#darkTheme').val('NotChosen');
$(this).val('#ffff');
console.log($(this).val());
console.log($('#darkTheme').val());
}
});
return a;
}
我的ajax調用看起來如何:
function registerCall() {
$('#signup').submit(function(event) {
event.preventDefault();
let loginName = $('#registerInput').val();
let userName = $('#userName').val();
let pwd = $('#registerPWD').val();
let confirmPWD = $('#confirmPWD').val();
let submit = $('#registerBtn').val();
let backgroundChooser = $('#backgroundChooser').val();
let whiteTheme = $('#whiteTheme').val();
let darkTheme = $('#darkTheme').val();
if (whiteTheme === 'NotChosen') {
let data = {
loginName: loginName,
userName: userName,
pwd: pwd,
confirmPWD: confirmPWD,
theme: darkTheme,
submit: submit
}
} else if (darkTheme === 'NotChosen') {
data = {
loginName: loginName,
userName: userName,
pwd: pwd,
confirmPWD: confirmPWD,
theme: whiteTheme,
submit: submit
}
} else {
data = {
loginName: loginName,
userName: userName,
pwd: pwd,
confirmPWD: confirmPWD,
theme: '#ffff',
submit: submit
}
}
console.log(data.theme);
$.ajax({
url: 'signup.php',
type: 'POST',
data: data,
success: function(response) {
}
});
});
}
我碰到的部分:
if (whiteTheme === 'NotChosen') {
let data = {
loginName: loginName,
userName: userName,
pwd: pwd,
confirmPWD: confirmPWD,
theme: darkTheme,
submit: submit
}
}
我認為這是一個詞匯范圍問題。 您在第一個if
塊內定義變量data
,然后在發出請求時在該塊外使用變量data
。
if (whiteTheme === 'NotChosen') {
let data = {
loginName: loginName,
userName: userName,
pwd: pwd,
confirmPWD: confirmPWD,
theme: darkTheme,
submit: submit
}
}
我建議將data
聲明移到您的if塊上方,例如:
...
let whiteTheme = $('#whiteTheme').val();
let darkTheme = $('#darkTheme').val();
let data;
if (whiteTheme === 'NotChosen') {
data = { ...
邁克爾·卡姆登(Michael Camden)是對的-與范圍有關,我將簡化您的代碼
function registerCall() {
$('#signup').submit(function(event) {
event.preventDefault();
let loginName = $('#registerInput').val();
let userName = $('#userName').val();
let pwd = $('#registerPWD').val();
let confirmPWD = $('#confirmPWD').val();
let submit = $('#registerBtn').val();
let backgroundChooser = $('#backgroundChooser').val();
let whiteTheme = $('#whiteTheme').val();
let darkTheme = $('#darkTheme').val();
let data = {
loginName: loginName,
userName: userName,
pwd: pwd,
confirmPWD: confirmPWD,
submit: submit
theme : '#ffff'
}
if (whiteTheme === 'NotChosen') {
data.theme = darkTheme;
} else if (darkTheme === 'NotChosen') {
data.theme = whiteTheme;
}
console.log(data.theme);
$.ajax({
url: 'signup.php',
type: 'POST',
data: data,
success: function(response) {}
});
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.