1

ユーザー名の最後の 5 文字を非表示にする必要があります。以下はコードです

<ul>
<li>
            </dl>
                <dl>
                <dt>Username:</dt>
                <dd id="up-d-username">AZRT435231
                </dd>
            </dl>
</li>
</ul>

出力が AZRT4XXXXX になるように、最後の 5 文字を「X」に置き換える必要があります。また、firebug などのツールを使用してページのソースからこの名前が表示されない可能性はありますか?

4

6 に答える 6

5
"AZRT435231".slice(0, -5) + "XXXXX";

ユーザーは元のページ ソースを引き続き読むことができます。これが重要な場合は、クライアントに到達する前にサーバー側の言語で処理してください。

よりポータブルなバージョンを作成できます...

var replaceLastNChars = function(str, replace, num) {
     return str.slice(0, -num) + Array(num + 1).join(replace);
};

それを組み合わせて...

$("#up-d-username")
 .text(function(i, text) { return replaceLastNChars(text, "X", 5); });

楽しみのために、jQueryなしで...

var elem = document.getElementById("up-d-username").firstChild;

elem.data = replaceLastNChars(elem.data, "X", 5);

新しいブラウザ...

var elem = document.querySelector("#up-d-username");

elem.textContent = replaceLastNChars(elem.textContent, "X", 5);
于 2013-01-24T06:35:58.260 に答える
3

このようにできます。

ライブデモ

txt = $.trim($('#up-d-username').text());
$('#up-d-username').text(txt.substring(0, txt.length - 5) + "XXXXX");
于 2013-01-24T06:36:53.210 に答える
1

もう 1 つのオプションは、正規表現を使用して、一致した文字列を "X" 文字に置き換えることです。

http://jsfiddle.net/uvDs8/

var re = /(.{1,5})$/;
var tester = "1234567890";

var new_value = tester.replace(re, function (matched) {
    return Array(matched.length+1).join("X");
});

alert(new_value);

この場合、できるだけ多く (文字列の末尾に最大 5 つまで) 置換するだけです。したがって、元の値の長さが 4 文字のみの場合、結果は 4 つの「X」文字になります。結果の長さが 6 文字の場合、結果は最初の文字に 5 文字の「X」を加えたものになります。等々。

于 2013-01-24T06:56:54.933 に答える
1

これをサーバー側の言語で非表示にして、ユーザーがデバッグ ツールでそれを見る機会がないようにする必要があります。

<?php
$username = "AZRT435231";
$output = substr($username, 0, -5) . "XXXXX";
?>
<ul>
<li>
            </dl>
                <dl>
                <dt>Username:</dt>
                <dd id="up-d-username"><?=$output?>
                </dd>
            </dl>
</li>
</ul>
于 2013-01-24T06:36:33.970 に答える
0

これを行うバニラJSの方法は次のとおりです。

 var name = document.getElementById('up-d-username');

 name.innerHTML = name.innerHTML.slice(0, -5) + "XXXXX";

jQuery を使用すると、次のように実行できます。

var $name = $('#up-d-username');

$name.html( $name.html().slice(0, -5) + "XXXXX" );

置き換えが行われる前に、ブラウザがデータを利用できるようになる一瞬があります。URL を単純に CURL するだけで、情報にアクセスできてしまいます。最善の策は、ブラウザに送信する前にサーバー側で置き換えることです。

于 2013-01-24T06:39:49.133 に答える