【问题标题】:Using a function defined in a variable使用在变量中定义的函数
【发布时间】:2011-03-12 05:30:44
【问题描述】:

我在another question 上找到了这段代码,但不知道如何使用它:

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

我已将需要替换的文本放入 id 为 text 的 div 中。有什么想法吗?

【问题讨论】:

  • 您要替换哪些值,应该用什么替换?

标签: javascript regex function variables replace


【解决方案1】:

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

var n = 0;

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

function(){ return ++n });

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

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

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

【讨论】:

    【解决方案2】:

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

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

    (另请注意,您需要去掉 'z' 字符周围的引号)。

    【讨论】:

    • 引号是我要搜索的字符串的一部分。
    • 好的,但除此之外,代码应该做你想做的你把引号放回
    【解决方案3】:

    如果我正确阅读了代码。它从 id=text 的单个元素中获取内部 html。

    例如下面的 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”至少应该是非常独特的。

    【讨论】:

      【解决方案4】:

      您需要修复要替换文本的元素的 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();">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-24
        • 2013-01-24
        • 1970-01-01
        • 2019-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多