Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript查找不带元素标记的字符串_Javascript_Jquery_Html - Fatal编程技术网

Javascript查找不带元素标记的字符串

Javascript查找不带元素标记的字符串,javascript,jquery,html,Javascript,Jquery,Html,我试图从html主体中获取字符串,该主体包含元素“上标和下标”标记。 到目前为止,我能够得到这些标签。 但我也希望有一个选项来查找没有sup/sub标记的字符串/字符。 如何找到没有附加标签的字符串。请帮忙。我的代码如下: 函数myFunction(){ var e=document.getElementById(“t1”); var strUser=e.options[e.selectedIndex].value; var i; 对于(i=0;i

我试图从html主体中获取字符串,该主体包含元素“上标和下标”标记。 到目前为止,我能够得到这些标签。 但我也希望有一个选项来查找没有sup/sub标记的字符串/字符。 如何找到没有附加标签的字符串。请帮忙。我的代码如下:

函数myFunction(){
var e=document.getElementById(“t1”);
var strUser=e.options[e.selectedIndex].value;
var i;
对于(i=0;i
.test{
/*边框:3件镶嵌红色*/
背景:红色;
颜色:白色
}
#mydiv{
背景:#000;
}

&注册;
&注册;
&注册;
&注册;
&注册;
&注册;
&贸易;
&贸易;
&贸易;
&注册;
&贸易;
&注册;


搜索上标
搜索下标
这可以通过迭代所有文本节点,然后搜索它们的父节点来找到
sup
sub
标记来实现。请参见以下示例:

const nodeIterator=document.createNodeIterator(document.querySelector(“#容器”),NodeFilter.SHOW_TEXT,{acceptNode:(node)=>
node.data.trim().length==0?NodeFilter.FILTER\u拒绝:NodeFilter.FILTER\u接受});
let节点;
while((node=nodeIterator.nextNode()){
const container=node.parentElement;
if(['SUP','SUB'].indexOf(container.nodeName)==-1&&!container.closest('SUP,SUB')){
console.log('文本不在',node.data的标记中);
}
}

&注册;
没有标签

这可以通过迭代所有文本节点,然后搜索它们的父节点来找到
sup
sub
标记来实现。请参见以下示例:

const nodeIterator=document.createNodeIterator(document.querySelector(“#容器”),NodeFilter.SHOW_TEXT,{acceptNode:(node)=>
node.data.trim().length==0?NodeFilter.FILTER\u拒绝:NodeFilter.FILTER\u接受});
let节点;
while((node=nodeIterator.nextNode()){
const container=node.parentElement;
if(['SUP','SUB'].indexOf(container.nodeName)==-1&&!container.closest('SUP,SUB')){
console.log('文本不在',node.data的标记中);
}
}

&注册;
没有标签
Jquery
:contains()选择器可以发挥神奇的作用:

我不知道如何使用代码段,但您可以找到我的JSFIDLE:

我在html中添加了一个选择:

<select id="t0">
    <option value="#container">All</option>
    <option value="sup">SUP</option>
    <option value="sub" >SUB</option>
</select>
下面是js代码

jQuery.fn.highlight = function (str, className) {
    var regex = new RegExp(str, "g");

    return this.each(function () {
        this.innerHTML = this.innerHTML.replace(regex, function(matched) {return "<span class=\"" + className + "\">" + matched + "</span>";});
    });
}; 

$('#search').click(function() {
  $('.test').removeClass('test');
  var text = $('#t1').val();
  $($('#t0').val()+":contains('"+text+"')").highlight(text, "test");
});
jQuery.fn.highlight=函数(str,className){
var regex=新的RegExp(str,“g”);
返回此。每个(函数(){
this.innerHTML=this.innerHTML.replace(正则表达式,函数(匹配){return”“+matched+”“;});
});
}; 
$(“#搜索”)。单击(函数(){
$('.test').removeClass('test');
var text=$('#t1').val();
$($(“#t0”).val()+”:包含(“+text+”)”)。高亮显示(text,“test”);
});
Jquery
:contains()选择器可以发挥神奇的作用:

我不知道如何使用代码段,但您可以找到我的JSFIDLE:

我在html中添加了一个选择:

<select id="t0">
    <option value="#container">All</option>
    <option value="sup">SUP</option>
    <option value="sub" >SUB</option>
</select>
下面是js代码

jQuery.fn.highlight = function (str, className) {
    var regex = new RegExp(str, "g");

    return this.each(function () {
        this.innerHTML = this.innerHTML.replace(regex, function(matched) {return "<span class=\"" + className + "\">" + matched + "</span>";});
    });
}; 

$('#search').click(function() {
  $('.test').removeClass('test');
  var text = $('#t1').val();
  $($('#t0').val()+":contains('"+text+"')").highlight(text, "test");
});
jQuery.fn.highlight=函数(str,className){
var regex=新的RegExp(str,“g”);
返回此。每个(函数(){
this.innerHTML=this.innerHTML.replace(正则表达式,函数(匹配){return”“+matched+”“;});
});
}; 
$(“#搜索”)。单击(函数(){
$('.test').removeClass('test');
var text=$('#t1').val();
$($(“#t0”).val()+”:包含(“+text+”)”)。高亮显示(text,“test”);
});

(不涉及主题但很难说)可能考虑将参数传递给函数,而不是一个完全相同的副本,除了一个硬编码的字符串……我不认为有一个简单的方法来获取没有标签的值,即使你可以,如果你有多个没有标签的值,它就会变得混乱。你能不能不在一个类中分配你不想要的项目,这样它们就可以很容易地被选择?寻找更强大的选择器。然而,一般来说,你想做什么?我觉得必须有更好的策略…是的。我实际上是在尝试区分sup标签和子标签,以及没有上述标签的字符…我觉得正如J.坎贝尔所说的那样可能会有所帮助…我会试试。你的js根本不起作用。。。非常混乱…请给一个正确的。顺便说一句,你提到了Jquey,但没有用它来查找sup或sub,为什么?(话题之外,但很难不提)也许考虑把一个参数传递给你的函数,而不是一个完全相同的副本,除了一个硬编码的字符串……我不认为有一个简单的方法来获得没有标签的值,即使你可以,它会变得混乱,如果你有多个值,没有标签。你能不能不在一个类中分配你不想要的项目,这样它们就可以很容易地被选择?寻找更强大的选择器。然而,一般来说,你想做什么?我觉得必须有更好的策略…是的。我实际上是在尝试区分sup标签和子标签,以及没有上述标签的字符…我觉得正如J.坎贝尔所说的那样可能会有所帮助…我会试试。你的js根本不起作用。。。非常混乱…请给一个正确的。顺便说一句,你提到了Jquey,但没有用它来查找sup或sub,为什么?虽然这个解决方案存在于我的JS中,但这个jquery使它更简单…尽管我仍然无法区分普通字符串和sub、sup标记…而这个解决方案存在于我的JS中,这个jquery