Подтвердить что ты не робот

Удалить последний Char из String с Javascript

У меня есть DIV с некоторыми символами. Как удалить последний символ из текста при каждом нажатии на DIV?

4b9b3361

Ответ 1

Удаление первого символа

​$("div").on("click", function(){
    $(this).text(function(index, text){
        return text.replace(/^.(\s+)?/, '');
    });
});​​​​​​​​​​​​

Удаление последнего символа

$("div").on("click", function(){
    $(this).text(function(index, text){
        return text.replace(/(\s+)?.$/, '');
    });
});

Удаление определенного Char

$("div").on("click", function(){
    $(this).text(function(index, text){
        return text.replace(/r/gi, '');
    });
});

См. пример каждого онлайн: http://jsfiddle.net/Xcn6s/

Ответ 2

Предполагая, что у вас есть ссылка на div, и он содержит только один текст node (как следует из вашего вопроса), это очень просто. Здесь не-jQuery-решение:

div.onclick = function() {
    var textNode = this.firstChild;
    textNode.data = textNode.data.slice(0, -1);
};

Ответ 3

Альтернатива Джонатану отвечает, как удалить первый символ:

$("div.myDiv").click(function(){
    $(this).html($(this).text().substring(1));
});

Или удалите последний символ:

$("div.myDiv").click(function(){
    $(this).html($(this).text().replace(/.$/g, ''));
});

Или, сходите с ума и удалите символ из случайного места:

$("div.myDiv").click(function(){
    var text = $(this).text();
    var index = Math.round(Math.random() * (text.length - 1));
    var result = text.substring(0, index) + text.substring(index + 1, text.length - 1);
    $(this).html(result);
});

Вместо случайного места вы можете использовать указанную выше функцию с предопределенным индексом для удаления из определенного места.

Ответ 4

Это удаляет символ каждый раз, когда вы нажимаете на div. Без дополнительных требований я больше не могу вам дать.

<html>

<head>
    <script>

    function deleteChar(div) {
       div.innerHTML = div.innerHTML.replace(/.$/, '');
    }

    </script>
</head>

<body>

    <div onclick="deleteChar(this)">this is my div</div>

</body>
</html>

О, извините, вы попросили jquery... Ну, вот как вы это делаете в прямом javascript.

Ответ 5

Изменить: здесь самый простой способ сделать это без каких-либо зависимостей в библиотеке

function removeLastChar(node) {
    var i = node.childNodes.length;
    while (--i >= 0) {
        if (3 === node.childNodes[i].nodeType) {
            node.childNodes[i].data = node.childNodes[i].data.replace(/\S\s*$/, '');
            break;
        }
    }
}

/\S\s*$/ по-прежнему означает "последнее не-пространство в конце"

Примечание: заимствован из решения Tim Down и последующих лет опыта веб-разработки,:)

Ответ 6

Если вы хотите удалить первый символ текста, каждый щелчок вы можете использовать подстроку. например:.

$("#textDiv").click(function(){
  $(this).html($(this).text().substring(1));
});

Ответ 7

Чтобы ответить на ответ Jonathons, используйте..

$("div.myDiv").click(function(){
  $(this).html( $(this).text().replace("/.$/gi", "o") );
});

Чтобы удалить последний символ

Ответ 8

Обычный JavaScript:

<div id="text">This is some text</div>
<script>
var node = text.firstChild;
var nodeValue = "";
var nodeValueLength = 0;
text.onclick = function () {
    nodeValue = node.nodeValue;
    node.nodeValue = nodeValue.substring(0, nodeValue.length - 1);
};
</script>

Ответ 9

Легко использовать селектор $= CSS3 атрибута, который означает "заканчивается" в вашем выборе jQuery:

Удалить 1-й символ:

$("div[id$=/]").each(function(){ 
    this.id = this.id.substr(1);
});

Удалить последний символ:

$("div[id$=/]").each(function(){ 
    this.id = this.id.substr(0,this.id.length - 1);
});