У меня есть DIV
с некоторыми символами. Как удалить последний символ из текста при каждом нажатии на DIV
?
Удалить последний Char из String с Javascript
Ответ 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);
});