提问人:Oříšek 提问时间:12/7/2020 最后编辑:ReynoOříšek 更新时间:12/7/2020 访问量:43
Text区域,删除最后一段
Textarea, remove last paragraph
问:
我想从文本区域中删除最后一段,但我的脚本只能工作一次 - 有没有办法在每次单击按钮时删除最后一段?
<!DOCTYPE html>
<html>
<body>
<textarea id="V1" rows="17" cols="65">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque tincidunt scelerisque libero. Sed convallis magna eu sem. Pellentesque sapien.
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
Integer imperdiet lectus quis justo. Et harum quidem rerum facilis est et expedita distinctio. Duis viverra diam non justo.
Aliquam erat volutpat. Aenean placerat. Nullam justo enim, consectetuer nec, ullamcorper ac, vestibulum in, elit. In convallis.</textarea>
<button onclick="remove()">Remove</button>
<script>
function remove() {
var elem = document.getElementById('V1'),
val = elem.value.split(/(?:\r\n|\r|\n)/g);
val.pop();
elem.value = val.join('\r\n') + ('\r\n');
}
</script>
</body>
</html>
答:
0赞
Mujibur Rehman Ansari
12/7/2020
#1
<!DOCTYPE html>
<html>
<body>
<textarea id="V1" rows="17" cols="65">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque tincidunt scelerisque libero. Sed convallis magna eu sem. Pellentesque sapien.
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
Integer imperdiet lectus quis justo. Et harum quidem rerum facilis est et expedita distinctio. Duis viverra diam non justo.
Aliquam erat volutpat. Aenean placerat. Nullam justo enim, consectetuer nec, ullamcorper ac, vestibulum in, elit. In convallis.</textarea>
<button onclick="remove()">Remove</button>
<script>
function remove() {
var elem = document.getElementById('V1'),
val = elem.value.split("\n");
val.pop();
elem.value = val.join("\n");
}
</script>
</body>
</html>
0赞
s.kuznetsov
12/7/2020
#2
这可以使用该方法完成。删除后,将保留行之间的间距。filter()
function remove() {
var elem = document.getElementById('V1'),
val = elem.value.split(/(?:\r\n|\r|\n)/g).filter(function(i){
return i;
});
val.pop();
elem.value = val.join('\n\r');
}
<textarea id="V1" rows="17" cols="65">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque tincidunt scelerisque libero. Sed convallis magna eu sem. Pellentesque sapien.
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
Integer imperdiet lectus quis justo. Et harum quidem rerum facilis est et expedita distinctio. Duis viverra diam non justo.
Aliquam erat volutpat. Aenean placerat. Nullam justo enim, consectetuer nec, ullamcorper ac, vestibulum in, elit. In convallis.</textarea>
<button onclick="remove()">Remove</button>
0赞
kmp
12/7/2020
#3
你必须使用空字符串,因为删除了数组的最后一项,但有时你的最后一项是这样的:filter
pop
""
为了实现这一点,我使用了 double bang 或 !,它根据值返回一个布尔值。
有关double bang: https://medium.com/better-programming/javascript-bang-bang-i-shot-you-down-use-of-double-bangs-in-javascript-7c9d94446054 的更多信息
因此,我添加了 +1 以保留空行。\r\n
join
function remove() {
var elem = document.getElementById('V1');
var val = elem.value.split(/(?:\r\n|\r|\n)/g).filter(paragraph => !!paragraph);
val.pop();
elem.value = val.join('\r\n\r\n');
}
0赞
Chop Suey
12/7/2020
#4
您最后要添加一个序列。后续调用将仅删除该部分。如果您省略了这一点,而是修剪文本,它应该可以工作:\r\n
<!DOCTYPE html>
<html>
<body>
<textarea id="V1" rows="17" cols="65">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque tincidunt scelerisque libero. Sed convallis magna eu sem. Pellentesque sapien.
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo.
Integer imperdiet lectus quis justo. Et harum quidem rerum facilis est et expedita distinctio. Duis viverra diam non justo.
Aliquam erat volutpat. Aenean placerat. Nullam justo enim, consectetuer nec, ullamcorper ac, vestibulum in, elit. In convallis.</textarea>
<button onclick="remove()">Remove</button>
<script>
function remove() {
var elem = document.getElementById('V1'),
val = elem.value.split(/(?:\r\n|\r|\n)/g);
val.pop();
elem.value = val.join('\r\n').trim();
}
</script>
</body>
</html>
上一个:防止默认写信
评论