Javascript заменить - не работает со строкой HTML - PullRequest
2 голосов
/ 21 декабря 2011

Я пытаюсь создать своего рода «шаблон» в простом старом html, в который затем могут быть вставлены элементы другой функцией javascript.

Итак, у меня есть

var string = "<div id='<@nameInsert>' style='padding: 2px;'>here's some text and stuff</div>";

И в функции я пытаюсь заменить <@nameInsert> на имя, которое я использую ...

string.replace("/<@nameInsert>", "525");

Но это не работает.Что-то вроде побега, неправильное представление об этом или что?

Ответы [ 4 ]

3 голосов
/ 21 декабря 2011

Это не работает, потому что вы пытаетесь заменить строку, которой нет в другой строке.

Я думаю, что вы смешиваете два разных способа замены. Вы можете заменить, используя строку:

string.replace("<@nameInsert>", "525");

и вы можете заменить, используя регулярное выражение:

string.replace(/<@nameInsert>/, "525");

Часть с косой чертой является литералом регулярного выражения, который дает тот же результат, что и:

string.replace(new RegExp("<@nameInsert>"), "525");

Вы можете предпочесть регулярное выражение, поскольку вы можете указать глобальный флаг, который будет заменять каждое вхождение, а не только первое:

string.replace(/<@nameInsert>/g, "525");
2 голосов
/ 21 декабря 2011

Не используйте кавычки, если вы хотите использовать регулярные выражения

string.replace(/<@nameInsert>/, "525");

Но в вашем случае вам не нужны регулярные выражения.Просто используйте строку:

string.replace("<@nameInsert>", "525");
0 голосов
/ 21 декабря 2011

Неважно, используете ли вы слеш (/) или кавычку (") для этого, поскольку у вас есть только одна строка для замены ... но просто убедитесь, что вы понимаете метод замены ... она не заменит существующую строка, а верните измененную копию этого .. так что вы можете сделать это так:

string = string.replace(/<@nameInsert>/, "525");
0 голосов
/ 21 декабря 2011

для меня это нормально работает,

string=string.replace("<@nameInsert>", "525");

вот пример

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script language="javascript">

  function test(){
    var string = "<div id='<@nameInsert>' style='padding: 2px;'>here's some text and stuff</div>";
    string=string.replace("<@nameInsert>", "525");
    alert(string);
  }

 </script>
</head>
<body>
  <input type="button" value="test" name="test" onclick="test()">  

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...