通过javascript中的部分文本获取节点名称

时间:2017-06-13 07:07:40

标签: javascript tags

我需要在列(:)之前和之后分隔值,在列之前作为键,在列之后作为值

例:

  • 产品名称:产品15
  • 产品代码:1234
  • 如果我搜索产品,则应使用javascript将产品名称和产品代码作为密钥,并将产品15和1234作为值

    
    
    var text1=document.documentElement.innerHTML;
    	var res = text1.match(/Product/g);
    	
    	for(j=0;j<res.length;j++)
    	{
    	   console.log(res[j]);		
    	}
    &#13;
       <li>Product name: Product 15</li>
       <li>product code: 1200</li>
       <span> product category : bag </span>
    &#13;
    &#13;
    &#13;

    2 个答案:

    答案 0 :(得分:0)

    执行document.documentElement.innerHTML;时,您正在从DOM中检索HTML字符串并进行搜索。如果执行此操作,则很难返回父节点,因为您没有节点关系。您应该查找搜索所需的必要元素并将其循环搜索。

    此外,text1.match将在文本中搜索模式并为您提供匹配的单词。因此,您只获得Product而不是完整的句子。相反,使用regex.test检查字符串是否具有必要的单词/ pattearn。此外,在单个文本上运行它而不是在完整的HTML字符串中,因为您需要父节点。

    &#13;
    &#13;
    var elements = document.querySelectorAll("li,span");
    var regex = /product/i
    
    for (var j = 0; j < elements.length; j++) {
      var text = elements[j].textContent;
      if (regex.test(text)) {
        console.log(text);
      }
    }
    &#13;
    <li>Product name: Product 15</li>
    <li>product code: 1200</li>
    <span> product category : bag </span>
    &#13;
    &#13;
    &#13;

    答案 1 :(得分:0)

     var arr=[];
     $('li').each(function(item){var item_text = $(item).text().split(':'); arr.push({[item_text[0]]:item_text[1]})});
    
    // show results
    console.log(arr);
    

    JS

    var options = document.getElementsByTagName('li');
    var arr=[];
    Array.from(options).forEach(function(item){var item_text = item.innerText.split(':'); arr.push({[item_text[0]]:item_text[1]})})
    
    // show results
      console.log(arr);