xml / javascript - 未创建节点

时间:2014-04-13 09:06:32

标签: javascript xml

我有两个文件:xml_database.xmllogin.html。这是login.html中的HTML:

<h2>Login:</h2>
Username: <input type="text" id="login_username"> &nbsp; <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>

1 个答案:

答案 0 :(得分:1)

如你所知,在{x}}方法创建元素的DOM模型构建从xml加载到浏览器,因此该方法不提供对读写本地文件的访问。 使用PHP等服务器端程序将适用于此解决方案。