我有两个文件:xml_database.xml
和login.html
。这是login.html
中的HTML:
<h2>Login:</h2>
Username: <input type="text" id="login_username"> <input type="button" value="Sign in!" id="sign_in"><br><br><hr>
<h2>Create an account:</h2>
Username: <input type="text" id="create_username"><br><br>
Welcome text: <textarea id="create_welcome" style="vertical-align: text-top;"></textarea>
<br><br>
<input type="button" value="Create an account!" id="create_account">
在我的xml_database.xml
:
<?xml version="1.0" encoding="utf-8"?>
<user username="chris97ong" welcomeText="htrftfd"></user>
所以当我点击按钮登录login.html
时,如果&#34; chris97ong&#34;在用户名文本输入中,我想要一个警告说&#34; htrftfd&#34;。这是login.html
的Javascript:
document.getElementById("sign_in").onclick = function() {
xmlDoc = loadXMLDoc("xml_database.xml");
users = xmlDoc.getElementsByTagName("user");
var username = document.getElementById("login_username").value;
var bool = false;
for(var i = 0; i < users.length && bool == false; i++) {
if(users[i].getAttribute("username") == username) {
bool = true;
alert("Your welcome text is " + users[i].getAttribute("welcomeText"));
}
}
if(bool == false) { alert("Such username does not exist"); }
}
它完美无缺。
现在我希望能够使用第二部分创建一个帐户。单击创建帐户的按钮时,我想在xml_database.xml
&#34;&lt; user&gt;&#34;中创建一个节点。我想要&#34;用户名&#34;这个新元素的属性是文本输入中的内容(带有id&#34; create_username&#34;)和&#34; welcomeText&#34;这个新元素是textarea中的内容(id为#34; create_welcome&#34;)。
这就是我的尝试:
document.getElementById("create_account").onclick = function() {
xmlDoc = loadXMLDoc("xml_database.xml");
users = xmlDoc.getElementsByTagName("user");
var username = document.getElementById("create_username").value;
var bool = false;
for(var i = 0; i < users.length && bool == false; i++) {
if(users[i].getAttribute("username") == username) {
bool = true;
alert("Such username already exists");
}
}
if(bool == false) {
var welcomeText = document.getElementById("create_welcome").value;
new_user = xmlDoc.createElement("user");
new_user.setAttribute("username",username);
new_user.setAttribute("welcomeText",welcomeText);
alert("Account created");
}
}
但它不起作用。当我尝试使用此新用户名登录时,警报会指出此用户名不存在。没有任何错误消息,并且xml文件根本没有更改。我的代码有什么问题我没有意识到? THX。
PS:我的<head>
代码中有此内容:
<script src="http://www.w3schools.com/dom/loadxmldoc.js"></script>
的
答案 0 :(得分:1)
如你所知,在{x}}方法创建元素的DOM模型构建从xml加载到浏览器,因此该方法不提供对读写本地文件的访问。 使用PHP等服务器端程序将适用于此解决方案。