将一个字符串分成两部分,并将每个部分放在一个不同的新字符串中

时间:2015-08-11 06:21:10

标签: javascript jquery

我有一个包含长html代码的字符串(resultString)。这些代码分为2个主要DIV,窗口和弹出窗口。

resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>"

现在我想分别检索窗口和弹出DIV的html内容,并将它们放在2个不同的字符串中(stringWindow和stringPopup)。

stringWindow = "<div id=\"window\">window content --- long html codes</div>";
stringPopup = "<div id=\"PopUp\">Popup content --- long html codes</div>";

在jQuery / javascript中有没有简单的方法呢? stringWindow是在Ajax json webmethod函数中构造的。任何帮助都非常感谢!提前谢谢。

7 个答案:

答案 0 :(得分:3)

您可以使用filter()outerHTML

  1. 使用 filter ,您可以使用特定选择器
  2. 过滤元素
  3. 现在,您可以使用 outerHTML 获取HTML内容
  4. &#13;
    &#13;
    var resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>",
      stringWindow, stringPopup;
    
    stringWindow = $(resultString).filter('#window')[0].outerHTML;
    stringPopup = $(resultString).filter('#PopUp')[0].outerHTML;
    
    console.log(stringPopup, stringPopup);
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:2)

jQuery中的琐碎:

&#13;
&#13;
var resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>"

var $doc = $("<div>" + resultString + "</div>");
var stringWindow = $doc.find('#window').text();
var stringPopup = $doc.find('#PopUp').text();
console.log("window", stringWindow);
console.log("popup", stringPopup);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- results pane console output; see http://meta.stackexchange.com/a/242491 -->
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
&#13;
&#13;
&#13;

普通的JS并没有那么难。

如果通过&#34;只是内容&#34;你不是指&#34; text&#34;但在div中标记,然后用text()替换html()

编辑:制作成可执行代码段。

答案 2 :(得分:2)

不使用jQuery的版本,不假设它在文档中或可以放入文档但仍然将其解释为HTML -

var domParser = new DOMParser(),
    doc = domParser.parseFromString(resultString, "text/html"),
    content = ["window", "PopUp"].map(function(id) {
        return doc.querySelector("#" + id).innerHTML;
    }),
    stringWindow = content[0],
    stringPopup = content[1];

答案 3 :(得分:1)

试试这个。这个对我有用。 Demo

resultString = "<div id=\"window\">window content --- long html codes</div>   <div id=\"PopUp\">Popup content --- long html codes</div>";

var res = resultString.split("</div>");

stringWindow = res[0].replace(/^<div[^>]*>|<\/div>$/g, '');
stringPopup = res[1].replace(/^<div[^>]*>|<\/div>$/g, '');

希望它有所帮助。

答案 4 :(得分:1)

我认为这可能会对您有所帮助: -

 var resultString = "<div id=\"window\">window content --- long html codes</div><div id=\"PopUp\">Popup content --- long html codes</div>"
        var splitter = document.createElement('div');
        splitter.innerHTML = resultString;

        var window = $(splitter).find("#window")
        var poppup = $(splitter).find("#PopUp")

如果有帮助则标记为答案

答案 5 :(得分:1)

这是使用C#...

进行此操作的一种方法

这可能有帮助...

将结果字符串视为......

string resultPopUp = resultString.Substring(resultString.IndexOf("<div id=\"PopUp"));
string resultWindow = resultString.Substring(resultString.IndexOf("<div id=\"window"), resultString.Length - resultString.IndexOf("<div id=\"PopUp\">")+2);

以下应该工作..

<div id=\"*****\">

将字符串结构维护为<select id="portfolioSubTypes" name="portfolioSubTypes" data-bind="ojComponent: {component: 'ojSelect', validators: [genericSelectionValidator], value: portfolioSubTypesVal,disabled: allCustomersPlaceHolder() ? true : false, options: portfoliosubTypeLst, optionsKeys: {label: 'subalertTypeDesc', value: 'subalertTypeId'}, rootAttributes: {style:'max-width:20em'}}"> </select>这应该有效....

答案 6 :(得分:0)

如果您只想要内容,请执行以下操作: 用jQuery:

 stringWindow =$('#window').innerHTML
 stringPopup =$('#PopUp').innerHTML

只有JS:

stringWindow =document.getElementById('window').innerHTML
stringPopup =document.getElementById('Popup').innerHTML