Javascript 仅获取id/名称的单词部分

Javascript 仅获取id/名称的单词部分,javascript,jquery,Javascript,Jquery,我有一个div元素,它包含许多子元素,所有元素的id都是“word1”形式的,举个简单的例子:id=“moviment1”或id=“type1”。 我只需要获取这些id的写入部分(moviment或type),以便将它们的名称以1的增量连接起来(id=“moviment2”或id=“type2”) 按这种方式,我总是得到像id=“moviment12”这样的id。我已经试过了: var id = $(this).prop('id').replace(/\d+/g, ''); 或 但是我总是会遇

我有一个div元素,它包含许多子元素,所有元素的id都是“word1”形式的,举个简单的例子:
id=“moviment1”
id=“type1”
。 我只需要获取这些id的写入部分(
moviment
type
),以便将它们的名称以1的增量连接起来(
id=“moviment2”
id=“type2”

按这种方式,我总是得到像
id=“moviment12”
这样的id。我已经试过了:

var id = $(this).prop('id').replace(/\d+/g, '');

但是我总是会遇到一些错误,比如
“无法读取未定义的”
的属性“replace”/“match”。那么,我做错了什么?还有其他想法吗?多谢各位

试试这个

var onlyAlphabets = id.split(/(\d)/)[0];

理想情况下,您应该使用模板。遍历和修改已解析的元素会使代码速度变慢,难以维护

如果要将ID的数字部分增加1,可以使用
replace
方法回调函数:

$clone.find('[id]').prop('id', function(_, id) {
    // Assuming `id` is `test_25_segment`
    return id.replace(/(\d+)/, function(num) {
    //                                   |
    //                                   --- is 25 
         return +num + 1;
    //          |
    //          --- parses the matching string into integer 
    });
});

最简单的方法是,只需将这些值添加为
数据属性即可:

<div id="type1" data-id="1" data-text="type"></div>


因此,只需使用
.data('id')
.data('text')
即可轻松将它们分开。您可以通过以下方式选择元素:

var all = [].filter.call(document.querySelectorAll('[id*=type]'), function(el) {
    return (/\btype\d+\b/).test(el.id);
});

然后您可以使用类似于
replace()

的方法更改id,如果您只想删除这些数字,那么
id=this.id.replace(/\d/g.),)
。顺便说一句,
$(this).prop(“id”)
是一种非常低效的编写
this.id
的方法。你能用小提琴重现这个问题吗?为什么不使用模板而不是克隆?我找到的一些链接可能会对你有所帮助:或者你可以使用敲除js。这很简单,节省了你的时间。
<div id="type1" data-id="1" data-text="type"></div>
var all = [].filter.call(document.querySelectorAll('[id*=type]'), function(el) {
    return (/\btype\d+\b/).test(el.id);
});