JavaScript替换方法替换太多了

时间:2014-05-02 11:53:25

标签: javascript replace

我正在尝试使用JavaScript中的replace方法删除<br>,而且它的替换方式太多了。

我从一个用<br>分隔的数据库中的链接列表开始。这通过AJAX返回给客户端。链接可能如下所示:

 www.yahoo.com?d=asdadsf&s=aadsfasdf<br>www.gmail.com<br>www.twitter.com

然后我运行了replace方法,但它删除了=符号后的所有内容。

以下是代码:

function storeLinks() {

var links =  "www.yahoo.com?d=asdadsf&s=aadsfasdf<br>www.gmail.com<br>www.twitter.com";
alert(links);
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {

var text = xmlhttp.responseText;
//alert(text);
var newtext = text.replace(/<br>/g,""); //HERE PROBABLY LIES PROBLEM
//alert(newtext);
document.getElementById("links").textContent=newtext;//OR POSSIBLY HERE
    }
  }
//xmlhttp.open("GET",url,true);
xmlhttp.open("GET","storelinks.php?links="+links,true);
xmlhttp.send();
}

很抱歉,我无法在JSFiddle中显示它,因为它在AJAX调用中使用后端数据库,但我希望有人能够发现replace语法中的错误,导致它消除的方式不仅仅是{ {1}}代码。

2 个答案:

答案 0 :(得分:0)

这是你在找什么?

var x = "www.yahoo.com?d=asdadsf&s=aadsfasdf<br>www.gmail.com<br>www.twitter.com";
var y = x.split("<br>").join("").split("<br/>").join("");

http://jsfiddle.net/sJC43/

答案 1 :(得分:0)

正则表达式工作得很好。你对它的使用是正确的。问题在于一些范围问题和进一步的诊断被阻止,因为您没有提供从服务器收到的数据以查看代码正在使用的内容。

function storeLinks() {

  var xmlhttp;
  var links = "www.yahoo.com?d=asdadsf&s=aadsfasdf<br>www.gmail.com<br>www.twitter.com";

  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
  } else {
    // PLEASE STOP USING IE6, IE5!!!!
    // http://mashable.com/2011/03/04/ie6-countdown/
    throw new Error("IE6 is not supported!");
  }

  xmlhttp.onreadystatechange = function() {
    var ul;
    if (this.readyState === 4 && this.status === 200) {
      ul = document.createElement('ul');
      this.responseText.split(/<br\s*\/?>/g)
        .map(function(link) {
          var li = document.createElement('li');
          li.textContent = link;
          return li;
        })
        .forEach(function(liTag) {
          ul.appendChild(liTag);
        });
    }
  };

  // "storelinks.php?www.yahoo.com?d=asdadsf&s=aadsfasdf<br>www.gmail.com<br>www.twitter.com=undefined"
  // ^ This does not make sense!
  xmlhttp.open("GET", "storelinks.php?" + links + "=" + text, true);
  xmlhttp.send();

  return xmlhttp;
}