javascript - Chrome报错 Unexpected token w 是怎么回事?
高洛峰
高洛峰 2017-04-10 15:29:08
[JavaScript讨论组]

在看Head First HTML5 第九章 Web Storage API
开网页以后Chrome报错:

HTML代码是

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Note to Self</title>
    <link rel="stylesheet" href="notetoself.css">
</head>
<body>
    <form>
        <label for="note_color">Color:</label>
        <select id="note_color">
            <option value="LightGoldenRodYellow">yellow</option>
            <option value="PaleGreen">green</option>
            <option value="LightPink">pink</option>
            <option value="LightBlue">blue</option>
        </select>
        <label for="note_text">Text:</label>
        <input type="text" id="note_text">
        <input type="button" id="add_button" value="Add Sticky Note to Self">
    </form>

    <ul id="stickies">

    </ul>

    <script src="notetoself.js"></script>
</body>
</html>

JS代码是

window.onload = init;

function init() {
    var button = document.getElementById('add_button');
    button.onclick = createSticky;

    var stickiesArray = getStickiesArray();

    for (var i=0; i<stickiesArray.length; i++) {
        var key = stickiesArray[i];
        var value = JSON.parse(localStorage[key]);
        addStickyToDOM(key, value);
    }
}

function addStickyToDOM(key, stickyObj) {
    var stickies = document.getElementById('stickies');
    var sticky = document.createElement('li');
    sticky.setAttribute('id', key);

    sticky.style.backgroundColor = stickyObj.color;

    var span = document.createElement('span');
    span.setAttribute('class', 'sticky');
    span.innerHTML = stickyObj.value;
    sticky.appendChild(span);
    stickies.appendChild(sticky);
    sticky.onclick = deleteSticky;
}

function createSticky() {
    var stickiesArray = getStickiesArray();
    var value = document.getElementById('note_text').value;
    var colorSelectObj = document.getElementById('note_color');
    var index = colorSelectObj.selectedIndex;
    var color = colorSelectObj[index].value;
    var currentDate = new Date();
    var key = "sticky_" + currentDate.getTime();
    var stickyObj = {
        "value": value,
        "color": color
    };
    localStorage.setItem(key, JSON.stringify(stickyObj));
    stickiesArray.push(key);
    localStorage.setItem('stickiesArray', JSON.stringify(stickiesArray));
    addStickyToDOM(key, stickyObj);
}

function getStickiesArray() {
    var stickiesArray = localStorage.getItem('stickiesArray');
    if (!stickiesArray) {
        stickiesArray = [];
        localStorage.setItem('stickiesArray', JSON.stringify(stickiesArray));
    }else{
        stickiesArray = JSON.parse(stickiesArray);
    }
    return stickiesArray;
}

function deleteSticky(e) {
    var key = e.target.id;
    if (e.target.tagName.toLowerCase() == "span") {
        key = e.target.parentNode.id;
    }

    localStorage.removeItem(key);
    var stickiesArray = getStickiesArray();
    if (stickiesArray) {
        for (var i=0; i<stickiesArray.length; i++) {
            if (key == stickiesArray[i]) {
                stickiesArray.splice(i, 1);
            }
        }
        localStorage.setItem('stickiesArray', JSON.stringify(stickiesArray));
        removeStickyFromDOM(key);
    }
}

function removeStickyFromDOM(key) {
    var sticky = document.getElementById(key);
    sticky.parentNode.removeChild(sticky);
}

这是怎么回事?Σ( ° △ °|||)︴
本地存储也不灵了...

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
大家讲道理

JSON.Parse 试试

怪我咯

返回Json格式不对啊,有特殊字符啊,编码一下啊

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号