0

ローカルjsonファイルを取得し、それを解析してローカルストレージに文字列化することになっているこのhtmlコードがあります。コードをテストしたかったのですが、フォームに入力して実行すると、ReferenceError: insertRecord is not defined in Firefox console と表示されます。

どんな助けでも大歓迎です。ありがとうございました。

<!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>
<title>Register</title>
<link href="css/navigation.css" rel="stylesheet" type="text/css">
<link href="css/body.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<script src="store.js" type="text/javascript"></script>
<script type="text/javascript">
var i;
var user;
var txt;

$(document).ready(function () {
    $.ajax({
    type: "GET",
    url: "studio.json",
    dataType: "json",
    success: getUser,
    error: function() {alert("retrieval error"); }
});
});

function getUser(data) {
if (localStorage) {
    if (!localStorage.getItem('user')) {
        user = JSON.parse(data.User);
        localStorage.setItem('user', user);
    }

    else {
        String item = localStorage.getItem('user');
        user = JSON.parse(item);
    }
}

else
    alert("Local Storage not supported");
}

function insertRecord() {
$.ajax({
    type: "GET",
    url: "studio.json",
    dataType: "json",
    success: insertUser,
    error: function(){ alert("retrieval error"); }
});

function insertUser() {
    txt = { firstName: document.getElementById("firstName").value,
            lastName: document.getElementById("lastName").value,
            userName: document.getElementById("userName").value,
            email: document.getElementById("email").value,
            password: document.getElementById("password").value
          };
    localStorage.setItem('user', user + JSON.stringify(txt));
}
}

</script>
</head>

<body>
<img src="images/Dance etc logo LARGE.jpg" width="263" height="150" alt="Dance Etc Logo" />
<hr />
<div data-role="header">
    <h1>Dance Etc.</h1>
</div>

<div data-role="content" >
    <h1>Register</h1>
    <form method="post" action="" id="register" name="form">
    <label>First Name: </label>
    <input type="text" id="firstName" /><br />
    <label>Last Name: </label>
    <input type="text" id="lastName" /><br />
    <label>Username: </label>
    <input type="text" id="userName" /><br />
    <label>Email: </label>
    <input type="text" id="email" /><br />
    <label>Password: </label>
    <input type="password" id="password" /><br />
    <input type="submit" value="Register" onClick="insertRecord()" />
    </form>
</div>

<div data-role="footer">
    <a href="Dance_Program">Contact Us</a>
    <a href="Register">Policy</a>
    <a href="Login">History</a>
</div>

4

1 に答える 1

0

コードには次の行があります。

String item = localStorage.getItem('user');

これは有効な JavaScript ではないため、 がスローSyntaxError: Unexpected identifierされ、残りの JavaScript コードが評価されません。
ただし、HTML にインラインでアタッチinsertRecordしようとすると、トリガーされたときに実行しようとしますが、評価されなかったコードを呼び出すことはできません。

を使用してイベントリスナーをアタッチすることを検討する必要がありますelement.addEventListener。さらに、コードをインデントすると、デバッグにも役立つ場合があります。

var i, user, txt;

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "studio.json",
        dataType: "json",
        success: getUser,
        error: function () {
            alert("retrieval error");
        }
    });
});

function getUser(data) {
    if (localStorage) {
        if (!localStorage.getItem('user')) {
            user = JSON.parse(data.User);
            localStorage.setItem('user', user);
        } else {
            item = localStorage.getItem('user');
            user = JSON.parse(item);
        }
    } else
        alert("Local Storage not supported");
}

function insertRecord() {
    $.ajax({
        type: "GET",
        url: "studio.json",
        dataType: "json",
        success: insertUser,
        error: function () {
            alert("retrieval error");
        }
    });

    function insertUser() {
        txt = {
            firstName: document.getElementById("firstName").value,
            lastName: document.getElementById("lastName").value,
            userName: document.getElementById("userName").value,
            email: document.getElementById("email").value,
            password: document.getElementById("password").value
        };
        localStorage.setItem('user', user + JSON.stringify(txt));
    }
}
于 2013-04-10T10:18:08.673 に答える