错误:函数未定义

时间:2014-04-11 13:48:21

标签: javascript html

我在chrome中遇到以下错误:

Uncaught ReferenceError: buildPopup is not defined 

但我在脑海中定义它:

<head>
    <script type="text/javascript" src="assets/js/jquery/jquery.js"></script>
    <script type="text/javascript" src="assets/js/info.js"></script>
</head>

info.js:

function showPopup()
{
    $("#popup").animate({
        "height": "500px",
        "width": "500px",
        "marginLeft": "-250px",
        "marginTop": "-250px",
        "opacity": "1"
    }, 500);
}
function buildPopup(title, text)
{
    if (document.getElementById("popup")!=undefined)
    {
        destroyPopup();
    }

    var p = document.createElement("div");
p.id = "popup";
p.innerHTML = "<img src=\"//"+window.location.host+"/assets/img/static/X.png\" style=\"float: right;\" onclick\"destroyPopup();\"/><iframe seamless="seamless" frameBorder="0"><h1>"+title+"</h1><br><p>"+text+"</p></iframe>";
p.style = "opacity: 0;position: fixed;z-index: 999;top: 50%;width: 6px;height: 6px;margin-top: -3px;overflow: hidden;left: 50%;margin-left: -3px;background-color: cyan;border: 3px groove red;";
document.body.appendChild(p);
    showPopup();
}
function destroyPopup()
{
    $("popup").remove();
}

我正在这样称呼它:

<body>
    <a href="#" onclick="buildPopup('Help','This is the Help')">Help</a>
</body>

Chrome加载jQuery.js和info.js没有错误。

2 个答案:

答案 0 :(得分:3)

您的代码中存在一些语法错误,因此永远不会创建函数。这就是你收到错误信息的原因。

在此部分代码中缺少+

..." + window.location.host "...

应该是:

..." + window.location.host + "...

您有一些未在此处转义的引号:

<iframe seamless="seamless" frameBorder="0">

应该是:

<iframe seamless=\"seamless\" frameBorder=\"0\">

当你修复了这些问题后,你将面临下一个问题,其中有几个已经指出过了。

页面完全加载后,您无法使用document.write

答案 1 :(得分:2)

页面加载后你不能使用document.write!那么当你再次调用它时会发生什么,页面将只有弹出代码。

您应该在页面加载后使用appendChild添加新元素。

var newDiv = document.createElement("div");
newDiv.id = "popup";
newDiv.className = "UseAClassNotInlineStyle";
newDiv.innerHTML = "<p>BOOM</p>";
document.body.appendChild(newDiv);

或者因为你正在使用jQuery,你可以只替换行

//document.write(h);
$(h).appendTo(document.body);

现在为什么代码不运行。我将代码粘贴到控制台中,您收到错误

Uncaught SyntaxError: Unexpected string fiddle.jshell.net/:38

看第38行,我看到了

var h = "<div id=\"popup\" style=\"opacity: 0;position: fixed;z-index: 999;top: 50%;width: 6px;height: 6px;margin-top: -3px;overflow: hidden;left: 50%;margin-left: -3px;background-color: cyan;border: 3px groove red;\"><img src=\"//"+window.location.host"/assets/img/static/X.png\" style=\"float: right;\" onclick\"destroyPopup();\"/><iframe seamless="seamless" frameBorder="0"><h1>"+title+"</h1><br><p>"+text+"</p></iframe></div>";

现在查看代码,您将看到在添加主机的那一行中存在错误。

开发时一定要看控制台!