javascript - Safari 问题,变量未定义(XML/Javascript)

标签 javascript php html xml safari

我有这段代码,它适用于所有浏览器,除了 Safari:

        // Create a connection to the file.
        var Connect = new XMLHttpRequest();

        // Define which file to open and
        // send the request.
        Connect.open("GET", "<?php echo $fileName;?>", false);
        Connect.setRequestHeader("Content-Type", "text/xml");
        Connect.setRequestHeader("Cache-Control", "no-cache");
        Connect.send();

        // Place the response in an XML document.
        var TheDocument = Connect.responseXML;

        // Place the root node in an element.
        var questions = TheDocument.childNodes[0];

        // Retrieve each customer in turn.
        for (var i = 0; i < 1; i++) {
            console.log(i);
            console.log("fake var");
            var question = questions.children[0];
            console.log(question);
        }

变量 $filename 是我正在读取的 XML 文件的 php 链接。 我有以下问题,代码运行到 For 循环,我可以记录 var“i”和“fake var”。但是一旦我将 var Question 定义为 questions.children[0],代码就会停止。我无法在 safari 中记录问题 var。

有什么想法吗? (也欢迎反馈,仍在学习 javascript/xml )

我的 XML 示例:

<?xml version='1.0' encoding="UTF-8" ?>
<Beantwoordt_kritiek id="1" admin="Jan Hut" categorie="Omgaan met elkaar" winswf="images/Kado (1).jpg">
  <gebruikers_vraag1>
    <vraag><![CDATA[Sleep de puzzelstukken naar het juiste vakje.]]></vraag>
    <s_vraag><![CDATA[sounds/puzzel.mp3]]></s_vraag>
    <thumb1><![CDATA[images/527puzzel1_1.jpg]]></thumb1>
    <thumb2><![CDATA[images/527puzzel1_2.jpg]]></thumb2>
    <thumb3><![CDATA[images/527puzzel1_3.jpg]]></thumb3>
    <thumb4><![CDATA[images/527puzzel1_4.jpg]]></thumb4>
    <vraagFoto><![CDATA[images/527puzzel1.jpg]]></vraagFoto>
  </gebruikers_vraag1>
</Beantwoordt_kritiek>

最佳答案

您可以使用此脚本,以便 safari 返回相同的结果。

<script>
function getChildren(element) {
  if (element.children == undefined) {
    var childNodes = element.childNodes
    var children = []
    for(var i = 1; i < childNodes.length; i += 2) {  // take every second element
      children.push(childNodes[i]);
    }
    return children;
  } else {
    return element.children
  }
}
</script>

然后在脚本中调用它

var question = getChildren(questions)[0];

关于javascript - Safari 问题,变量未定义(XML/Javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24489240/

相关文章:

javascript - 如果 ng-if 中存在指令,则 AngularJS 指令的编译函数不会被执行

javascript - ionic 如何在浏览 View 时保持固定背景

javascript - 如何比较两个对象数组并更改另一个数组中未找到的对象的属性?

php - 如何减少获得此结果所需的查询数量

php - ios通知无法在laravel中设置私钥文件

javascript - 为什么空格会破坏我在 javascript 中的代码?

php - preg_replace 正则表达式需要正斜杠打开和关闭吗?

html - 为什么 z-index 不起作用?

JQuery多导航菜单问题

html - 相对位置 CSS