簡體   English   中英

只有我的else if和else語句得到評估,而我的if語句沒有

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM