5

以下のコードで div (#welcome) が更新されない理由がわかる方はいらっしゃいますか?

function show_logged_in(success)
{

    var is_logged_in = success;

    var dataString = {"reg":invalid, "login":invalid,"is_logged_in":is_logged_in};

    $.ajax({
        type:"POST",
        url:"PHP/class.ajax.php",
        data:dataString,
        dataType:'JSON',
        success: function(username) {
            alert("User is shown");
            user = username;
            change_div();
        },
        error: function() {
            alert("ERROR in show_logged_in")
        }
    });

function change_div(){
    $('#welcome').style.display = 'block';
    $('#welcome').innerHTML = "Welcome" + user + "to SIK";
    }

}

呼び出された ajax からの応答は、セッション変数からユーザー名を取得するだけです。そしてそれは正しく戻っています。

そして、それが戻ってきたら、divが表示されて歓迎されたいと思います。しかし、何らかの理由で div が更新されていません。

html は次のとおりです。

<div id="welcome" style="display:none; postion:absolute; top:0; float:right;">...</div>

4

5 に答える 5

5

あなたはできません

$('#welcome').style.display = 'block';
$('#welcome').innerHTML = "Welcome" + user + "to SIK";

jqueryで。これは$('#welcome')、DOM 要素ではなく、jQuery オブジェクトを取得しているためです。

jQuery でこれを行うには:

$('#welcome').html('Welcome' + user + 'to SIK').show(); // Brought up in comments

$('#welcome').show(); // Old
$('#welcome').html('Welcome' + user + 'to SIK'); // Old

または、本当に DOM 要素を取得したい場合:

$('#welcome')[0].style.display = 'block';
$('#welcome')[0].innerHTML = "Welcome" + user + "to SIK";
于 2013-03-20T11:59:36.657 に答える
1

@Jeff Shaverは正しいですがuser、引数として渡しますchange_div(user);

それから

function change_div(user){
       $('#welcome').show();
       $('#welcome').html('Welcome' + user + 'to SIK');
}
于 2013-03-20T12:01:10.697 に答える
1

この友達を試してみてください..

$.ajax({
        type:"POST",
        url:"PHP/class.ajax.php",
        data:dataString,
        dataType:'JSON',
        success: function(username) {
            alert("User is shown");
            user = username;
            change_div(user);
        },
        error: function() {
            alert("ERROR in show_logged_in")
        }
    });

function change_div(user){
    $('#welcome').css("display","inline");
    $('#welcome').append("Welcome" + user + "to SIK");
    }
于 2013-03-20T12:28:15.080 に答える
0

このコードでは、純粋な JS に固執します。

var welcome = document.getElementById('welcome');

function change_div(){
    welcome.innerHTML = "Welcome" + user + "to SIK";
    welcome.style.display = 'block';
}
于 2013-03-20T12:05:06.353 に答える
0

表示プロパティが存在しません。

$('#welcome').style.display = 'block';

代わりにこれを使用してください:

$('#welcome').css({"display":"block"});
于 2013-03-20T12:03:16.763 に答える