我有一个允许用户注册电子邮件的html页面,它将其存储在XML文件中。
我想知道下面我的脚本可能出现的问题。但它似乎并没有起作用,因为我的测试警报在它应该的时候不会消失。它应该将所有电子邮件元素抓取到一个数组中,然后循环遍历数组检查用户输入。如果找到匹配,则应返回false并提醒我。
var Email = document.getElementById("Email").value;
var result = true;
var request = new XMLHttpRequest();
request.open("GET", "user.xml", false);
request.send();
var xml = request.responseXML;
var xmlEmails = xml.getElementsByTagName("email");
for(var i = 0; i < xmlEmails.length; i++) {
var xmlEmail = xmlEmails[i];
for(var j = 0; j < email.length; j++) {
if (email == email[j].childNodes[j].nodeValue)
{ result = false;
alert("testing");
}
}
这里是xml文件数据
<?xml version="1.0"?>
<customers>
<customer>
<id>0</id>
<firstname>John</firstname>
<lastname>Doe</lastname>
<email>JohnDoe@mia.com</email>
<password>insecure</password>
</customer>
<customer>
<id>1</id>
<firstname>Jane</firstname>
<lastname>Doe</lastname>
<email>JaneDoe@mia.com</email>
<password>forgetful</password>
</customer>
</customers>
谢谢:)。
答案 0 :(得分:0)
我认为您错误地使用了两个不同的变量:电子邮件和电子邮件。无论如何都不使用xmlEmail。你也错过了一个}。它应该是这样的:
var Email = document.getElementById("Email").value;
var result = true;
var request = new XMLHttpRequest();
request.open("GET", "user.xml", false);
request.send();
var xml = request.responseXML;
var xmlEmails = xml.getElementsByTagName("email");
for(var i = 0; i < xmlEmails.length; i++) {
var xmlEmail = xmlEmails[i].childNodes[0].nodeValue;
if (xmlEmail == Email) {
result = false;
alert("testing");
}
}