Использование функции, определенной в переменной - PullRequest
2 голосов
/ 12 марта 2011

Я нашел этот код на другой вопрос , но не уверен, как его использовать:

var text = document.getElementById("text").innerHTML;
    text = text.replace(/"z"/g, 
           function(n){ return ++n });
document.write(text);
Это именно то, что мне нужно, но я не уверен, как передать число в функцию. По сути, у меня есть большой список csv (разделенных запятыми) элементов, и мне нужно искать каждое вхождение "z" и заменять его числом, увеличенным на единицу. Код здесь, но я просто еще не знаю, как его использовать.

Я разместил свой текст, который нужно заменить внутри div с идентификатором text . Есть идеи?

Ответы [ 4 ]

2 голосов
/ 12 марта 2011

Определите переменную n перед этим кодом:

var n = 0;

Удалите аргумент n из функции, чтобы вы получили

function(){ return ++n });

Тогда n ссылается на переменную, которую вы определили, и функция не требует аргументов.

Аргумент n был соответствующим текстом в вопросе, на который вы ссылались. В этом случае этот текст не имеет значения, так как он всегда z.

document.write, как правило, не очень хорошая идея. Было бы лучше заменить его, назначив innerHTML элемента по вашему выбору.

0 голосов
/ 12 марта 2011

вам нужно исправить идентификатор элемента, в который вы заменяете текст. Это работает:

<script>
var n = 0;
 function replaceText() {
     var text = document.getElementById("text").innerHTML;
     text = text.replace(/"z"/g, function(){ return ++n });

     // Changed to be placed here as suggested
     document.getElementById("text").innerHTML = text;
}
</script>
<div id="text">
    "6","z","AAA 101 - College 101:Student Experience","Introduces students to college culture and prepares...","1"
</div>
<input type="button" value="Find" onClick="replaceText();">
0 голосов
/ 12 марта 2011

Если я правильно прочитал код. Он берет внутренний html из одного элемента с id = text.

например, элементы span ниже:

<div id="text">
   <span id="exzzzample">maybe CSV data is here z</span>
   <span>More CSV Data z z z z</span>
</div>

Затем он заменяет каждое z на число, которое продолжает увеличиваться. Это будет:

   <span id="ex123ample">maybe CSV data is here 4</span>
   <span>More CSV Data 5 6 7 8</span>

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

   var n = 567; // An arbitrary starting value.

Обратите внимание, что любые "z" в атрибутах содержащихся элементов также будут заменены в соответствии с моим примером. «z» должен быть по крайней мере уникальным, если вы решите свою проблему таким образом.

0 голосов
/ 12 марта 2011

Значение, переданное в функцию в переменной n - это то, что было найдено в строке.Это число в вопросе, на который вы ссылались, но здесь это текст (буква «z»).Вместо того, чтобы использовать найденный текст, вы можете просто создать глобальную переменную и использовать ее вместо этого:

var text = document.getElementById("text").innerHTML;
var num = 0;
text = text.replace(/z/g, function(n){ return ++num });
document.write(text);

(также учтите, что вам нужно избавиться от кавычек вокруг символа 'z').

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