Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 空/空';getElementsByTagName';在我的XML文件中_Javascript_Html_Hta - Fatal编程技术网

Javascript 空/空';getElementsByTagName';在我的XML文件中

Javascript 空/空';getElementsByTagName';在我的XML文件中,javascript,html,hta,Javascript,Html,Hta,我的问题是在XML文件中调用“childNode”时。如果标签之间有信息,一切正常。如果它是“null”或空的,那么我的脚本将出错,无法继续处理。如何让脚本忽略“null”子节点并继续运行?我想忽略空引用并继续处理XML文件,因为某些字段将为空 我得到了这个错误: Unable to get property 'nodeValue' of undefined or null reference. ---HTML/HTA文件-在IE 11中工作或作为.HTA文件工作 <!DOCTYPE

我的问题是在XML文件中调用“childNode”时。如果标签之间有信息,一切正常。如果它是“null”或空的,那么我的脚本将出错,无法继续处理。如何让脚本忽略“null”子节点并继续运行?我想忽略空引用并继续处理XML文件,因为某些字段将为空

我得到了这个错误:

Unable to get property 'nodeValue' of undefined or null reference. 
---HTML/HTA文件-在IE 11中工作或作为.HTA文件工作

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -->
<!-- <meta http-equiv="X-UA-Compatible" content="IE=10"> -->
<meta charset="utf-8">
<title>:: Races  ::</title>

<HTA:APPLICATION
     SCROLL="no"
     SINGLEINSTANCE="yes"
     SYSMENU="yes"
     BORDER="dialog"
     ICON="ms-icon-144x144.png"
>

<!-- *** SETS HTA's WINDOW SIZE *** -->
<SCRIPT LANGUAGE="VBScript">
    Sub Window_onLoad

        window.resizeTo 1600,700

    End Sub 
</SCRIPT>
<!-- END SETS HTA's WINDOW SIZE *** -->

</head>
<body onload="LoadXML();">

<!-- *** XML - WRITE TO LOCAL FILE SCRIPT - XML *** -->
<script type ="text/javascript">
function WriteToFileXML()
{
  try 
  {
    var WshNetwork = new ActiveXObject("Microsoft.XMLDOM");
    var userName = WshNetwork.UserName;
    var fso, s;
    fso = new ActiveXObject("Scripting.FileSystemObject");

    if(fso.FileExists("M:/Races/test.xml")){
        s = fso.OpenTextFile("M:/Races/test.xml", 2, true);
        } else {
        s = fso.CreateTextFile("M:/Races/test.xml", true);
        }

    var one_seq=document.getElementById("OneSeqCheckbox").checked;
    var one_race_field=document.getElementById("OneRaceField").value;
    var one_county_selected=document.getElementById("OneCountySelected").value;

    var two_seq=document.getElementById("TwoSeqCheckbox").checked;
    var two_race_field=document.getElementById("TwoRaceField").value;
    var two_county_selected=document.getElementById("TwoCountySelected").value;

    var three_seq=document.getElementById("ThreeSeqCheckbox").checked;
    var three_race_field=document.getElementById("ThreeRaceField").value;
    var three_county_selected=document.getElementById("ThreeCountySelected").value;

s.writeline("\<\?xml version\=\"1\.0\" encoding\=\"UTF\-8\" standalone\=\"yes\"\?\>");
s.writeline("\<Races\_data xmlns\:xsi\=\"http\:\/\/www\.w3\.org\/2001\/XMLSchema\-instance\"\>");

    if (one_seq==false)
        {
        s.writeline("");
        }
        else
            {
            s.writeline("   \<record\>");
            s.writeline("       \<Race\_Name\>" + one_race_field + "\<\/Race\_Name\>");
            s.writeline("       \<County\_Selected\>" + one_county_selected + "\<\/County\_Selected\>");
            s.writeline("   \<\/record\>");
            }
    if (two_seq==false)
        {
        s.writeline("");
        }
        else
            {
            s.writeline("   \<record\>");
            s.writeline("       \<Race\_Name\>" + two_race_field + "\<\/Race\_Name\>");
            s.writeline("       \<County\_Selected\>" + two_county_selected + "\<\/County\_Selected\>");
            s.writeline("   \<\/record\>");
            }
    if (three_seq==false)
        {
        s.writeline("");
        }
        else
            {
            s.writeline("   \<record\>");
            s.writeline("       \<Race\_Name\>" + three_race_field + "\<\/Race\_Name\>");
            s.writeline("       \<County\_Selected\>" + three_county_selected + "\<\/County\_Selected\>");
            s.writeline("   \<\/record\>");
            }
s.writeline("\<\/Races\_data\>");
    s.Close();
  } 
  catch(err)
  {
   var strErr = 'Error:';
   strErr += '\nNumber:' + err.number;
   strErr += '\nDescription:' + err.description;
   document.write(strErr);
  }
}
</script>
<!-- *** XML - END WRITE TO LOCAL FILE SCRIPT - XML *** -->

<h1>Races</h1>
<form id="myForm" onkeypress="return (event.keyCode !== 38);" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" autocomplete=off>
<div style="width:1300px;height:485px;overflow:auto;">
    <input name="OneRaceField" type="text" id="OneRaceField" size="30" /></td>
    <select name="OneCountySelected" id="OneCountySelected">
        <option value="" selected="selected"></option>
        <option value="Mars County">Mars County</option>
        <option value="Jupiter County">Jupiter County</option>
    </select>
    <input name="TwoRaceField" type="text" id="TwoRaceField" size="30" /></td>
    <select name="TwoCountySelected" id="TwoCountySelected">
        <option value="" selected="selected"></option>
        <option value="Mars County">Mars County</option>
        <option value="Jupiter County">Jupiter County</option>
    </select>
    <input name="ThreeRaceField" type="text" id="ThreeRaceField" size="30" /></td>
    <select name="ThreeCountySelected" id="ThreeCountySelected">
        <option value="" selected="selected"></option>
        <option value="Mars County">Mars County</option>
        <option value="Jupiter County">Jupiter County</option>
    </select>
</div>
<br />
<br />
<br />
<div style="width: 150px; height: 200px; position:absolute; left: 1350px; top: 135px;">
<input style="width: 150px; height: 200px;" name="write_to_file" type="button" id="write_to_file" onClick="Validate(); WriteToFileXML(); RunExe();" value="Save Changes" />
<img src="please_wait.jpg" id="loading_image" name="loading_image" style="display:none" />
</div>
<div style="width: 150px; height: 200px; position:absolute; left: 1350px; top: 367px;">
<input style="width: 150px; height: 200px;" name="Reset_Form" type="button" id="Reset_Form" onClick="resetForm(); WriteToFileXML(); RunExe();" value="Reset Form" />
</div>
<!-- <div style="width: 150px; height: 200px; position:absolute; left: 693px; top: 367px;">
<input style="width: 150px; height: 200px;" name="upload_to_website" type="button" id="upload_to_website" onClick="RunExe();" value="Upload to Website" />
</div> -->
</form>

<script type="text/javascript">
function LoadXML()
{
    var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    var fso = new ActiveXObject("Scripting.FileSystemObject");  

        //if(fso.fileExists("M:/Races/test.xml"))
        {       
        xmlDoc.load("M:/Races/test.xml");

            document.getElementById("OneRaceField").innerText =
            xmlDoc.getElementsByTagName("Race_Name")[0].childNodes[0].nodeValue;            
            document.getElementById("OneCountySelected").value =

            document.getElementById("TwoRaceField").innerText =
            xmlDoc.getElementsByTagName("Race_Name")[1].childNodes[0].nodeValue;            
            document.getElementById("TwoCountySelected").value =

            document.getElementById("ThreeRaceField").innerText =
            xmlDoc.getElementsByTagName("Race_Name")[2].childNodes[0].nodeValue;            
            document.getElementById("ThreeCountySelected").value =
            xmlDoc.getElementsByTagName("County_Selected")[2].childNodes[0].nodeValue;      
        }
}
</script>

</body>
</html>

::比赛:
子窗口加载
window.resizeTo 1600700
端接头
函数WriteToFileXML()
{
尝试
{
var WshNetwork=新的ActiveXObject(“Microsoft.XMLDOM”);
var userName=WshNetwork.userName;
var fso,s;
fso=新的ActiveXObject(“Scripting.FileSystemObject”);
如果(fso.FileExists(“M:/Races/test.xml”)){
s=fso.OpenTextFile(“M:/Races/test.xml”,2,true);
}否则{
s=fso.CreateTextFile(“M:/Races/test.xml”,true);
}
var one_seq=document.getElementById(“OneSeqCheckbox”)。选中;
var one_race_field=document.getElementById(“OneRaceField”).value;
var one_county_selected=document.getElementById(“OneCountySelected”).value;
var two_seq=document.getElementById(“TwoSeq复选框”)。选中;
var two_race_field=document.getElementById(“TwoRaceField”).value;
var two_county_selected=document.getElementById(“TwoCountySelected”).value;
var three_seq=document.getElementById(“ThreeSeqCheckbox”)。选中;
var three_race_field=document.getElementById(“ThreeRaceField”).value;
var three_county_selected=document.getElementById(“ThreeCountySelected”).value;
s、 写线(\);
s、 写线(\);
如果(一个顺序==假)
{
s、 书写线(“”);
}
其他的
{
s、 写线(\);
s、 写线(“\”+一个比赛\场+“\”);
s、 写线(“\”+选定的一个县+“\”);
s、 写线(\);
}
如果(两个顺序==假)
{
s、 书写线(“”);
}
其他的
{
s、 写线(\);
s、 写线(“\”+两个比赛场+“\”);
s、 写线(“\”+所选两个县+“\”);
s、 写线(\);
}
如果(三个顺序==假)
{
s、 书写线(“”);
}
其他的
{
s、 写线(\);
s、 写线(“\”+three\u race\u field+“\”);
s、 写线(“\”+three\u county\u selected+“\”);
s、 写线(\);
}
s、 写线(\);
s、 Close();
} 
捕捉(错误)
{
var strErr='错误:';
strErr+='\n编号:'+err.number;
strErr+='\n说明:'+err.description;
文件编写(strErr);
}
}
比赛
马尔斯县
朱庇特县
马尔斯县
朱庇特县
马尔斯县
朱庇特县



函数LoadXML() { var xmlDoc=新的ActiveXObject(“Microsoft.XMLDOM”); var fso=新的ActiveXObject(“Scripting.FileSystemObject”); //如果(fso.fileExists(“M:/Races/test.xml”)) { load(“M:/Races/test.xml”); document.getElementById(“OneRaceField”).innerText= getElementsByTagName(“Race_Name”)[0].childNodes[0].nodeValue; document.getElementById(“OneCountySelected”).value= document.getElementById(“TwoRaceField”).innerText= xmlDoc.getElementsByTagName(“Race_Name”)[1]。子节点[0]。节点值; document.getElementById(“TwoCountySelected”).value= document.getElementById(“ThreeRaceField”).innerText= xmlDoc.getElementsByTagName(“Race_Name”)[2]。子节点[0]。节点值; document.getElementById(“ThreeCountySelected”).value= xmlDoc.getElementsByTagName(“选定的县”)[2]。子节点[0]。节点值; } }
---xml-文件工作正常

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Races_data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <record>
            <Race_Name>Mayor 1</Race_Name>
            <County_Selected>Mars County</County_Selected>
        </record>
        <record>
            <Race_Name>Mayor 2</Race_Name>
            <County_Selected>Jupiter County</County_Selected>
        </record>
        <record>
            <Race_Name>Mayor 3</Race_Name>
            <County_Selected>Mars County</County_Selected>
        </record>
</Races_data>

市长1
马尔斯县
市长2
朱庇特县
市长3
马尔斯县
---test.xml-由于此处缺少信息,脚本停止/出错:

<Race_Name></Race_Name>

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Races_data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <record>
            <Race_Name>Mayor 1</Race_Name>
            <County_Selected>Mars County</County_Selected>
        </record>
        <record>
            <Race_Name></Race_Name>
            <County_Selected>Jupiter County</County_Selected>
        </record>
        <record>
            <Race_Name>Mayor 3</Race_Name>
            <County_Selected>Mars County</County_Selected>
        </record>
</Races_data>

市长1
马尔斯县
朱庇特县
市长3
马尔斯县

对于ajax,您必须执行以下操作:

var my_url = 'M:/Races/test.xml';
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
  if (4 === this.readyState) {  /* DONE */
    if (200 === this.status) {  /* LOADING */
      fctCallBack(this);
    }
    else {
      console.warn("Error %d loading %s !", this.status, my_url);
    }
  }
};
xmlhttp.open("GET", url, true);
xmlhttp.send();



function fctCallBack(xml) {
  var xmlDoc = xml.responseXML;

  xmlDoc.querySelectorAll('record').forEach(
    function (record) {
      console.log( 'Race_Name =' , record.querySelector('Race_Name').value )
      console.log( 'County_Selected =' , record.querySelector('County_Selected').value )
    }   
  )

}

嗯,我想这是一个没有消息的错误?或者你认为错误信息是无用的?或者你更喜欢我们自己寻找这个错误来让事情复杂化?当它是.hta时,我得到的错误是:无法获取未定义或空引用的属性'nodeValue'。当我以HTML的形式打开它时,我没有得到一个错误。它只是在停止处理,因为它是空的。抱歉。我不清楚我最初的要求。我将更新原始帖子以反映我的问题。我想忽略空引用并继续处理我的XML文件,因为某些字段将为空。自从我使用loadXML以来,它已存在多年,但它不是url…..应该是XML stringActiveXObject已过时,您是否在Windows 2000上使用了IE5?为什么不使用ajax请求?谢谢您提供的信息。我将努力实施它。我确实重写了我的问题,并以完整的.html文件为例。