6

ユーザーの役割に基づいていくつかのリスト項目を非表示にするために JavaScript を使用しています。

リスト項目の から役割を取得していますtext()。値を文字列と比較すると、$("#activeUser").text()機能しません。

リスト項目の text() 値を取得するために JavaScript で使用している HTML ブロック。

<ul class="pull-right breadcrumb">
    <li><a href="index.php">Home</a>  <span class="divider">/</span> </li>
    <li id="activeUser" class="active"> <?php echo ucfirst($_SESSION['sewafs_user_role']);  ?> </li>
</ul>

Javascript

$(document).ready(function () {
    var testRole = $("#activeUser").text();

    //This block of code works
    role = 'Guest';
    if (role == 'Guest') {
        alert("Inside if");
        $("#request_history_li").hide();
        $("#assign_role_li").hide();
        $("#volunteer_li").hide();
        $("#profile_li").show();
        $("#change_password_li").show();

    }

    //This doesn't work why?
    if (testRole == 'Guest') {
        alert("Inside if");
        $("#request_history_li").hide();
        $("#assign_role_li").hide();
        $("#volunteer_li").hide();
        $("#profile_li").show();
        $("#change_password_li").show();

    }

});

しかし、alert を使用して var testRole の値を確認すると、Guest が出力されます。

testRole.toString() / string(testRole) メソッドを使用して testRole 値を文字列に変換しようとしましたが、何も役に立ちませんでした。

どこが間違っているのか教えてください。ありがとう。

4

5 に答える 5

12

問題は、受け取った値に余分な空白があるようです$("#activeUser").text()

解決策: 値をトリミングしてから、次のように比較に使用する必要があります。

var testRole = $("#activeUser").text().trim();

また

var testRole = $.trim($("#activeUser").text());

また

var testRole = $("#activeUser").text();
testRole = $.trim(testRole);

上記のいずれかが機能します。

jQuery トリムの詳細については、このリンクを参照してください。

空白テスト:
余分な空白があるかどうかをテストする場合は、以下の JavaScript コードを試してください。

alert("-" + $("#activeUser").text() + "-");

"" を取得した場合、受け取った値に空白はありません。しかし、の<前後>にスペースがある場合、これらは空白であり、パーティーを台無しにしています。

于 2013-08-23T06:49:35.490 に答える
0

デモ

$(document).ready(function () {
        var testRole = $("#activeUser").text().trim();    
        //This doesn't work why?
        if (testRole == "Guest") {
            alert("Inside if");
            $("#request_history_li").hide();
            $("#assign_role_li").hide();
            $("#volunteer_li").hide();
            $("#profile_li").show();
            $("#change_password_li").show();

        }

    });
于 2013-08-23T06:42:05.507 に答える
0

文字列の最初と最後にある空白を削除する必要があります。

var testRole = $("#activeUser").text().replace(/^\s+|\s+$/g,'');

ここで理由がわかります: http://jsfiddle.net/AfUZR/1/

于 2013-08-23T06:31:55.837 に答える