为什么这在jsfiddle中有效,但在我的文档中却没有

时间:2012-08-08 17:47:22

标签: javascript jquery

我找到了一个很棒的jsfiddle,有人制作并希望在我的项目中使用它的一部分:

http://jsfiddle.net/manuel/29gtu/

它适用于jsfiddle,但不适用于我的HTML文档。以下是我的文件中的内容:

<!DOCTYPE html>
<html>
<head>
<script src="scripts/jquery-1.7.2.js"></script>

<script>

$("button").click(function() {
    var id = $("#id").val();
    var text = "icon-"+id;
    // update the result array
    var result = JSON.parse(localStorage.getItem("result"));
    if(result == null)
        result = [];

    result.push({id: id, icon: text});
    // save the new result array
    localStorage.setItem("result", JSON.stringify(result));

    // append the new li
    $("#bxs").append($("<li></li>").attr("id", "item-"+id).html(text));
});

// on init fill the ul
var result = JSON.parse(localStorage.getItem("result"));
if(result != null) {
    for(var i=0;i<result.length;i++) {
        var item = result[i];
        $("#bxs").append($("<li></li>").attr("id", "item-"+item.id).html(item.icon));
    }
}​

</script>
</head>

<body>
<ul id="bxs" class="tabs"> 
</ul>

<input type="text" id="id" /><button>save</button>
</body>
</html>

从小提琴中复制并粘贴代码。我认为这与我没有本地存储插件有关。 为了让jsfiddle工作,我需要一些我缺少的外部插件吗?

2 个答案:

答案 0 :(得分:10)

您应该将整个代码包装在$(document).ready(function() {...});

所以

<script type="text/javascript">

    $(document).ready(function() {
        $("button").click(function() {
            var id = $("#id").val();
            var text = "icon-" + id;
            // update the result array
            var result = JSON.parse(localStorage.getItem("result"));
            if (result == null) result = [];

            result.push({
                id: id,
                icon: text
            });
            // save the new result array
            localStorage.setItem("result", JSON.stringify(result));

            // append the new li
            $("#bxs").append($("<li></li>").attr("id", "item-" + id).html(text));
        });

        // on init fill the ul
        var result = JSON.parse(localStorage.getItem("result"));
        if (result != null) {
            for (var i = 0; i < result.length; i++) {
                var item = result[i];
                $("#bxs").append($("<li></li>").attr("id", "item-" + item.id).html(item.icon));
            }
        }

    });

</script>

注意

jsfiddle onLoad模式下为您执行此操作,即从左侧面板下拉列表中选择onLoad,然后在DOM中出现所有资源后执行所有js代码。

答案 1 :(得分:3)

像这样放入$(document).ready,同时给出脚本标签的类型

<script type="text/javascript">
$(document).ready(function() {   

    $("button").click(function() {
        var id = $("#id").val();
        var text = "icon-" + id;
        // update the result array
        var result = JSON.parse(localStorage.getItem("result"));
        if (result == null) result = [];

        result.push({
            id: id,
            icon: text
        });
        // save the new result array
        localStorage.setItem("result", JSON.stringify(result));

        // append the new li
        $("#bxs").append($("<li></li>").attr("id", "item-" + id).html(text));
    });

    // on init fill the ul
    var result = JSON.parse(localStorage.getItem("result"));
    if (result != null) {
        for (var i = 0; i < result.length; i++) {
            var item = result[i];
            $("#bxs").append($("<li></li>").attr("id", "item-" + item.id).html(item.icon));
        }
    }
})​;    
 </script>