【问题标题】:Replace for loop with forEach function用 forEach 函数替换 for 循环
【发布时间】:2018-09-25 20:45:22
【问题描述】:

我想用 forEach 函数替换 for 循环,因为循环在 Splunk JavaScript 中不起作用。

for 循环不起作用的原因是我的 JavaScript 代码嵌入在 XML 中,当我在我的 JavaScript 代码中使用 <> 字符时,由于它们而出现错误。

function myFunction() {
  // Declare variables
  var input, filter, ul, li, a, i;
  input = document.getElementById("mySearch");
  filter = input.value.toUpperCase();
  ul = document.getElementById("myMenu");
  li = ul.getElementsByTagName("li");

  // Loop through all list items, and hide those who don't match the search query
  for (i = 0; i < li.length; i++) {
    a = li[i].getElementsByTagName("a")[0];
    if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
      li[i].style.display = "";
    } else {
      li[i].style.display = "none";
    }
  }
}
<input type="text" id="mySearch" onkeyup="myFunction()" placeholder="Search.." title="Type in a category">

<ul id="myMenu">
  <li><a href="#">HTML</a></li>
  <li><a href="#">CSS</a></li>
  <li><a href="#">JavaScript</a></li>
  <li><a href="#">PHP</a></li>
  <li><a href="#">Python</a></li>
  <li><a href="#">jQuery</a></li>
  <li><a href="#">SQL</a></li>
  <li><a href="#">Bootstrap</a></li>
  <li><a href="#">Node.js</a></li>
</ul>

【问题讨论】:

  • 这里的“不工作”是什么意思。 for 循环是基本的 JS。并不是说我不会尽我所能摆脱它们,但是,它怎么不起作用?
  • 你可以在javascript中找到hereforEach的doc。
  • 请同时显示此代码操作的简化 HTML。
  • 请在您的问题中添加,包括正确的格式,而不是在 cmets 中。
  • 我只是在问,因为这看起来可能是X Y problem。与其在不使用尖括号字符的情况下开发整个应用程序,不如先弄清楚为什么 Splunk 会在尖括号字符上阻塞。

标签: javascript splunk splunk-sdk


【解决方案1】:

您似乎遇到了 XML 转义问题,因为您的 JavaScript 嵌入在 Splunk 设置中的 XML 文档中。与其重写您的 JavaScript 以不使用 &lt;&gt; 字符,不如在 XML 中正确转义这些字符以便您可以正常使用它们。

您可以使用CDATA 部分让XML 解析器知道您正在编写纯文本而不是XML,这样它就不会阻塞&lt;&gt; 字符。要创建CDATA 部分,只需将您的代码像这样包装在 XML 文档中:

<![CDATA[
    ...your code here...
]]>

这告诉 XML 阅读器,这些标记之间的所有内容都应按字面意思理解,而不是尝试将其解析为 XML。它应该防止 XML 解析器抱怨您有错误的 &lt;&gt; 字符。

有关在 XML 中转义值的更多信息,请参阅此 Stack Overflow 答案:

What characters do I need to escape in XML documents?

【讨论】:

  • @AnmarAlShammari 我建议您在问题中发布您的 XML,以便 StackOverflow 用户能够帮助查看问题所在并正确集成修复程序。我还建议您发布您遇到的特定错误(与以前的错误完全相同,还是不同的错误?)
  • @AnmarAlShammari:同样,“它不起作用”不是一个有用的描述。从您到目前为止所描述的情况来看,这听起来最有可能提供帮助。您是否阅读过 CDATA 部分以确保您知道如何正确使用它们?既然您在这里有了提示,您是否搜索过如何在 XML 中转义 &lt; 字符?正如 Maximillian 所说,请发布您的 XML(一些合理的子集)以帮助其他人帮助您诊断问题。
猜你喜欢
  • 2019-04-04
  • 2018-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多