Javascript / Jquery替换内部html内容中的单引号和双引号

时间:2013-12-26 04:21:15

标签: javascript jquery string

假设我有一个DIV如下。

<div id="mydiv">
    <p class="abc">some text here</p>
    <p class="xyz"><img src="img.jpg" title="my img"/> some "double quoted text" here</p>
</div>

我读了div的内部html。

var originalcontent = $("mydiv").html();

现在我需要替换文本的双引号,而不是标记属性。所以我的输出应该如下。

var myoutput = '<p class="abc">some text here</p><p class="xyz"><img src="img.jpg" title="my img"/> some &quot;double quoted text&quot; here</p>'

请你给我一个解决方案。谢谢!

2 个答案:

答案 0 :(得分:2)

试试这个:

function replace_text(node){ 
  node = node || document.getElementById('mydiv'); // Change 'mydiv' if you need 

  var children = node.childNodes;
  var i = 0;

  while(node = children[i]){ // While-loop

    if (node.nodeType == 3){ // Some text, replace
        if (node.textContent) { // Not IE (IE's equivalent to textContent is nodeValue)
            node.textContent = node.textContent.replace(/"/g, '&quot;');
        }
        else { // IE
            node.nodeValue = node.nodeValue.replace(/"/g, '&quot;');
        }
    } else { // not text, take step further
      replace_text(node); 
    } 
    i++; 
  } 

} // While-loop


// Don't forget to call function
replace_text();

答案 1 :(得分:0)

使用Jquery你可以这样做:

    String.prototype.replaceAll = function(stringToFind,stringToReplace){
    var temp = this;
    var index = temp.indexOf(stringToFind);
        while(index != -1){
            temp = temp.replace(stringToFind,stringToReplace);
            index = temp.indexOf(stringToFind);
        }
        return temp;
   };
    $(function(){                     

            $("#mydiv").children().each(function(){
                 var text=$(this).text(); 
                 text=text.replaceAll("\"","&quot;"); 
                 //alert(text);
                 $(this).text(text); 
             });
    });