Javascript 正则表达式删除破折号及其后的所有内容

Javascript 正则表达式删除破折号及其后的所有内容,javascript,regex,Javascript,Regex,我有一个函数,可以从标题中删除破折号和破折号之后的所有内容。 这是JS <script> (function() { var str2 = document.querySelector('.dash-remove').innerHTML; var txt2 = str2.replace(/ -.*$/g,""); document.querySelector('.dash-remove').innerHTML = txt2; })(); </script>

我有一个函数,可以从标题中删除破折号和破折号之后的所有内容。 这是JS

<script>
(function() {
var str2 = document.querySelector('.dash-remove').innerHTML;
   var txt2 = str2.replace(/ -.*$/g,"");
   document.querySelector('.dash-remove').innerHTML = txt2;
})();
</script>

(功能(){
var str2=document.querySelector('.dash remove').innerHTML;
var txt2=str2.replace(/-.*$/g,“”);
document.querySelector('.dash remove')。innerHTML=txt2;
})();
Html是这样的

<h2 class="dash-remove">Testing - this function</h2>
测试-此函数
但是这不起作用,它不会删除破折号或后面的文本

我尝试过这样移除仪表板:

<script>
(function() {
var str2 = document.querySelector('.dash-remove').innerHTML;
   var txt2 = str2.replace('-',"");
   document.querySelector('.dash-remove').innerHTML = txt2;
})();
</script>

(功能(){
var str2=document.querySelector('.dash remove').innerHTML;
var txt2=str2.replace('-',“”);
document.querySelector('.dash remove')。innerHTML=txt2;
})();

这是有效的,所以我想这和正则表达式有关?有什么想法吗?

正如OP评论中所讨论的,这可能是因为课堂上出现了多次。然后,您应该与以下内容一起使用:

(函数(){
document.querySelectorAll('.dash remove').forEach(item=>{
item.innerHTML=item.innerHTML.replace(/-.*$/g');
});
})();
Html是这样的
测试-此函数

测试-该函数
正则表达式工作正常。还有什么不同之处吗?@user6537157我只是在思考——可能是因为这个类中有不止一个元素,并且它在第一个元素之后停止了吗?@MariaL是的,这就可以解释了。使用
forEach
查找示例。改用jQuery<代码>$(')。删除破折号)。每个(…)`@MariaL请参阅下面的更新答案。问题是标题是动态加载的,所以querySelectorAll不会work@MariaL然后在动态加载标题时,将
document.querySelectorAll
部分移动到。如果以后添加了更多,您可以在显示它们之前调整它们的标题。