使用变量中定义的函数

时间:2011-03-12 05:30:45

标签: javascript regex function variables replace

我在another question上找到了此代码,但我不确定如何使用它:
    

var text = document.getElementById("text").innerHTML;
    text = text.replace(/"z"/g, 
           function(n){ return ++n });
document.write(text);
这正是我需要的,但我不知道如何将数字传递给函数。基本上,我有一个大的csv(逗号分隔)项目列表,需要查找每次出现的 “z” ,并将其替换为加1的数字。代码在这里,但我还不知道如何使用它。

我放置了我的文本女巫需要在ID为 text 的div中替换。有什么想法吗?

4 个答案:

答案 0 :(得分:2)

在该代码之前定义变量n:

var n = 0;

从函数中删除n参数,所以你有

function(){ return ++n });

n然后引用您定义的变量,函数不需要参数。

参数n是您引用的问题中的匹配文本。在这种情况下,该文本是无关紧要的,因为它始终是z。

document.write通常不是一个好主意。最好通过为您选择的元素分配innerHTML来替换它。

答案 1 :(得分:0)

传递给变量n中的函数的值是在字符串中找到的值。这是你引用的问题中的一个数字,但这里是文本(字母'z')。而不是使用找到的文本,您只需创建一个全局变量并使用它:

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

(另请注意,您需要删除“z”字符周围的引号。)

答案 2 :(得分:0)

如果我正确阅读了代码。它从内容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”至少应该是非常独特的。

答案 3 :(得分:0)

您需要修复要替换文本的元素的ID。这有效:

<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();">