Javascript 函数未定义,但显示在页面源中

Javascript 函数未定义,但显示在页面源中,javascript,ajax,Javascript,Ajax,我有一个函数,当用户单击按钮时调用。Firebug一直告诉我函数未定义,但代码在标题中: <!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" lang="en" xml:lang="en">

我有一个函数,当用户单击按钮时调用。Firebug一直告诉我函数未定义,但代码在标题中:

    <!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" lang="en" xml:lang="en">
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="keywords" content="Wildberry,Incense,Coconut,100Pcs" />
    <meta name="description" content="A true coconut fragrance.It's part of our 'Fruits' Fragrance Family." />
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    <title>The Realms of Wickedry &bull; Wildberry Incense Coconut 100Pcs</title>

    <link rel="stylesheet" type="text/css" href="css/shadowbox.css" />

    <script type="text/javascript" src="js/shadowbox.js"></script>
    <script type="text/javascript">
    Shadowbox.init({
        handleOversize: "drag",
        modal: true
    });

    var ajaxRequest;
    var url = "ajax.php";

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }

    function cartRemove(id)
    {
        ajaxRequest.onreadystatechange = function()
        {
            if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){
                document.getElementById('cart').innerHTML = ajaxRequest.responseText;
            }
        }
        var params = "mode=cartremove&id=" + id;
        ajaxRequest.open("POST", url, true);
        ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajaxRequest.setRequestHeader("Content-length", params.length);
        ajaxRequest.setRequestHeader("Connection", "close");
        ajaxRequest.send(params);
    }

    function wishRemove(id)
    {
        ajaxRequest.onreadystatechange = function()
        {
            if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){
                document.getElementById('wishlist').innerHTML = ajaxRequest.responseText;
            }
        }
        var params = "mode=wishremove&id=" + id;
        ajaxRequest.open("POST", url, true);
        ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajaxRequest.setRequestHeader("Content-length", params.length);
        ajaxRequest.setRequestHeader("Connection", "close");
        ajaxRequest.send(params);
    }

    function addReview(id)
    {
        var u = 2;
        var review = document.review.reviewContent.value;
        ajaxRequest.onreadystatechange = function()
        {
            if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200)
            {
                document.getElementById('reviews_div').innerHTML = ajaxRequest.responseText;
            }
        }
        var params = "mode=reviews&id=" + id + "&u=" + u + "&reviewContent=" + review;
        ajaxRequest.open("POST", url, true);
        ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajaxRequest.setRequestHeader("Content-length", params.length);
        ajaxRequest.setRequestHeader("Connection", "close");
        ajaxRequest.send(params);
    }

    function wishAdd(id)
    {
        ajaxRequest.onreadystatechange = function()
        {
            if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){
                document.getElementById('wishlist').innerHTML = ajaxRequest.responseText;
            }
        }
        var params = "mode=wishlist&id=" + id;
        ajaxRequest.open("POST", url, true);
        ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajaxRequest.setRequestHeader("Content-length", params.length);
        ajaxRequest.setRequestHeader("Connection", "close");
        ajaxRequest.send(params);
    }

    function shareWish()
    {
        window.open("./../shop/pages/share_pop.php","Share Wishlist","menubar=0,resizable=0,location=0,width=550,height=300");
    }

    function checkList()
    {
        var email_list = document.getElementById['email_list'].innerHTML;
        if(email_list == '')
        {
            return;
        }
        else
        {
            var urlStr = '';
            var emails = email_list.replace(/^\s+|\s+$/g,"");
            emails = emails.split(",");
            var count = emails.length;
            var i = 0;
            while(i <= count)
            {
                urlStr += "&email"+i+"="+emails[i];
            }

            ajaxRequest.onreadystatechange = function()
            {
                if(ajaxRequest.readyState == 4 && ajaxRequest.status == 200){
                    document.getElementById('share_results').innerHTML = ajaxRequest.responseText;
                }
            }

            var params = "mode=share_wish"+urlStr;
            ajaxRequest.open("POST", url, true);
            ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            ajaxRequest.setRequestHeader("Content-length", params.length);
            ajaxRequest.setRequestHeader("Connection", "close");
            ajaxRequest.send(params);
        }
    }
    </script>

</head>
<body>
<div id="maincontainer">
    <div id="topsection">
        <div class="innertube">
            <div id="header_img">
                <a style="border:none!important;" href="./../shop/index.php"><img style="border:none!important;" src="http://xxxxxxxxxxxx/shop/images/Wickedry.png" alt="header_img" /></a>

            </div>
            <div id="header_nav">
                <a class="nav_links" href="./../shop/index.php">Home</a>
                <a class="nav_links" href="./../shop/login.php?mode=logout&amp;sid=c02fc022a1553cc34964448194c9d20b">Logout [Chaos Creator]</a>

                                <a class="nav_links" href="./../shop/cart.php">View Cart</a>
                <a class="nav_links" href="./../shop/view.php?mode=wishlist">View Wishlist</a>
                            </div>

        </div>
    </div>  <div id="contentwrapper">
        <div id="contentcolumn">
            <div class="innertube">
                <div id="titleBar">
                    <div id="breadcrumb">
                        <a href="./../shop/view.php?mode=cat&id=15">Health & Beauty</a> &#62;&#62; <a href="./../shop/view.php?mode=subcat&id=67"> Candles</a>                  </div>

                    <div id="prod_title">
                        <h1>Wildberry Incense Coconut 100Pcs</h1>
                    </div>
                </div>
                <div id="prod_wrap">
                    <div id="prod_img">
                        <a class="prod_img_link" href="./images/products/large/GL5325.jpg" rel="shadowbox;title=Wildberry Incense Coconut 100Pcs;">
                            <img class="prod_img" src="http://xxxxxxxxx/shop/images/products/thumbs/GL5325.jpg" alt="Wildberry Incense Coconut 100Pcs" />

                        </a>
                    </div>
                    <div id="prod_desc">
                        <p>A true coconut fragrance.It's part of our 'Fruits' Fragrance Family.</p>
                    </div>
                </div>
                <br />
                <div id="details">

                    <div id="prod_details">
                        Manufactured by: Wild Berry<br />
                        Model: GL5325<br />
                    </div>
                    <div id="prod_price">
                        $9.75                   </div>
                    <div id="quantity">

                                                    <form method="post" action="./../shop/view.php?mode=prod&amp;add_id=3806">
                                <input type="hidden" name="id" value="3806" />
                                <input type="text" name="quantity" value="0" onfocus="this.value='';" size="3" />
                                <input class="btn" type="submit" name="submit" value="Add to Cart" />
                            </form>
                                            </div>
                    <br />
                    <br />
                                        <a class="wish" href="#" onclick="wishAdd(3806);">Add to Wish List</a><br />

                    <br />
                    <br />
                    <strong>Add a Review:</strong><br />
                    <form action="" method="post" name="review">
                        <textarea cols="50" rows="10" name="reviewContent" id="reviewContent"></textarea><br />
                        <input type="submit" class="btn" name="review_submit" id="review_submit" onclick="addReview(3806);" value="Submit!" />
                    </form>
                    <br /><br /><div name="reviews_div"><p style="text-alignment:center;">There are no reviews for this item. Be the first to add one!</p></div>                </div>

            </div>
        </div>
    </div>  <div id="leftcolumn">
        <div class="innertube">
            <div style="border: 1px solid white;">
                <div class="innertube">
                                <div id="search">
                <h2>Search</h2>

                <table cellpadding="5" cellspacing="1" class="searchBox" width="100%">
                    <tr>
                        <td align="center">
                            <form method="get" action="http://search.atomz.com/search/">
                                <table>
                                    <tr>
                                        <td align="center">
                                            <input type="hidden" name="sp_a" value="sp10049097" />
                                            <input size="25" name="sp_q" />

                                        </td>
                                    </tr>
                                    <tr>
                                        <td align="center">
                                            <input type="submit" value="Search" class="btn" />
                                        </td>
                                    </tr>
                                </table>
                                <input type="hidden" name="sp_p" value="all">

                                <input type="hidden" name="sp_f" value="UTF-8">
                            </form>
                            <br />
                            <a href="./../shop/search.php">Advanced Search</a>
                        </td>
                    </tr>
                </table>
            </div>              </div>

            </div>
            <div style="border: 1px solid white;margin-top: 10px;">
                <div class="innertube">
                                <div id="menu">
                <h2>Categories</h2>
                            </div>              </div>

            </div>
        </div>
    </div>  <div id="rightcolumn">
        <div class="innertube">
            <div style="border: 1px solid white;">
                <div class="innertube">
                                                    Welcome back, Chaos Creator!<br />
                <a href="<b>[phpBB Debug] PHP Notice</b>: in file <b>/shop/pages/blocks/login_box.php</b> on line <b>27</b>: <b>Undefined variable: u_profile</b><br />
">My Account</a><br />

                <a href="./../shop/cart.php">View Cart</a><br />
                <a href="./../shop/view.php?mode=wishlist">View Wishlist</a><br />
                                </div>
            </div>
            <div style="border: 1px solid white;margin-top: 10px;">
                <div class="innertube">
                        <h2>My Shopping Cart</h2>

    <div id="cart">
        You have no items in your cart! </div><br />
                </div>
            </div>
            <div style="border: 1px solid white;margin-top: 10px;">
                <div class="innertube">
                        <h2>My Wishlist</h2>
    <div id="wishlist">

        You have no items in your wishlist! </div>              </div>
            </div>
        </div>
    </div>  <div id="footer">
        &copy; 2010-2011 by <a href="http://www.xxxxxxxx.com/">xxxxxxxxxxxxxx</a><br />
        Search Powered by <a href="http://www.sphider.eu/"><img src="http://xxxxxxxxxxxxx/shop/images/sphider-logo.png" border="0" style="vertical-align: middle" alt="Sphider"></a>

    </div>
</div>
</body>
</html>

维克德里和布尔的王国;野莓香椰子100件
Shadowbox.init({
handleOversize:“拖动”,
莫代尔:对
});
var ajaxRequest;
var url=“ajax.php”;
试一试{
//Opera 8.0+、Firefox、Safari
ajaxRequest=新的XMLHttpRequest();
}捕获(e){
//Internet Explorer浏览器
试一试{
ajaxRequest=newActiveXObject(“Msxml2.XMLHTTP”);
}捕获(e){
试一试{
ajaxRequest=新的ActiveXObject(“Microsoft.XMLHTTP”);
}捕获(e){
//出了点问题
警告(“你的浏览器坏了!”);
返回false;
}
}
}
功能删除(id)
{
ajaxRequest.onreadystatechange=函数()
{
if(ajaxRequest.readyState==4&&ajaxRequest.status==200){
document.getElementById('cart').innerHTML=ajaxRequest.responseText;
}
}
var params=“mode=cartremove&id=”+id;
打开(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
ajaxRequest.setRequestHeader(“内容长度”,参数长度);
setRequestHeader(“连接”、“关闭”);
ajaxRequest.send(参数);
}
函数wishRemove(id)
{
ajaxRequest.onreadystatechange=函数()
{
if(ajaxRequest.readyState==4&&ajaxRequest.status==200){
document.getElementById('wishlist').innerHTML=ajaxRequest.responseText;
}
}
var params=“mode=wishremove&id=”+id;
打开(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
ajaxRequest.setRequestHeader(“内容长度”,参数长度);
setRequestHeader(“连接”、“关闭”);
ajaxRequest.send(参数);
}
功能addReview(id)
{
var u=2;
var review=document.review.reviewContent.value;
ajaxRequest.onreadystatechange=函数()
{
if(ajaxRequest.readyState==4&&ajaxRequest.status==200)
{
document.getElementById('reviews\u div')。innerHTML=ajaxRequest.responseText;
}
}
var params=“mode=reviews&id=“+id+”&u=“+u+”&reviewContent=“+review;
打开(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
ajaxRequest.setRequestHeader(“内容长度”,参数长度);
setRequestHeader(“连接”、“关闭”);
ajaxRequest.send(参数);
}
函数wishAdd(id)
{
ajaxRequest.onreadystatechange=函数()
{
if(ajaxRequest.readyState==4&&ajaxRequest.status==200){
document.getElementById('wishlist').innerHTML=ajaxRequest.responseText;
}
}
var params=“mode=wishlist&id=”+id;
打开(“POST”,url,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
ajaxRequest.setRequestHeader(“内容长度”,参数长度);
setRequestHeader(“连接”、“关闭”);
ajaxRequest.send(参数);
}
函数shareWish()
{
window.open(“../../shop/pages/share_pop.php”,“共享愿望列表”,“菜单栏=0,可调整大小=0,位置=0,宽度=550,高度=300”);
}
功能检查表()
{
var email_list=document.getElementById['email_list'].innerHTML;
如果(电子邮件列表=='')
{
回来
}
其他的
{
var urlStr='';
var emails=email_list.replace(/^\s+|\s+$/g,“”);
电子邮件=电子邮件。拆分(“,”);
var count=电子邮件长度;
var i=0;

虽然(我做了一些修改,但没有什么问题,希望这有帮助

<!doctype html>

<html>
    <head>
        <script>
            Element.prototype.postAjax = function (params, url) {
                var ajaxRequest;

                try {
                    // Opera 8.0+, Firefox, Safari
                    ajaxRequest = new XMLHttpRequest();
                }
                catch (e) {
                    // Internet Explorer Browsers
                    try {
                        ajaxRequest = new ActiveXObject ("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                            ajaxRequest = new ActiveXObject ("Microsoft.XMLHTTP");
                        }
                        catch (e) {
                            // Something went wrong
                            alert("Your browser broke!");
                            return false;
                        }
                    }
                }

                ajaxRequest.open ("POST", url, true);

                ajaxRequest.setRequestHeader ("Content-type", "application/x-www-form-urlencoded");
                ajaxRequest.setRequestHeader ("Content-length", params.length);
                ajaxRequest.setRequestHeader ("Connection", "close");

                ajaxRequest.send (params);

                var _this = this;

                ajaxRequest.onreadystatechange = function () {
                    if (ajaxRequest.readyState === 4) {
                        if (ajaxRequest.status === 200) {
                            _this.innerHTML = ajaxRequest.responseText;
                        }
                        else {
                            alert ("Error, please try again.");
                        }
                    }
                }
            }

            window.addEventListener ("load", function () {
                var button = document.getElementsByTagName ("input")[0];
                var id = 1; // Don't know where you get it
                var wishlist = document.getElementById ("wishlist");

                button.addEventListener ("click", function () {
                    wishlist.postAjax ("mode=wishlist&id=" + id, "ajax.php");
                }, false);
            }, false);
        </script>

        <title></title>
    </head>

    <body>
        <input type = "button" value = "Click me man !" />

        <div id = "wishlist"></div>
    </body>
</html>


这是我现在能做的最多的了,剩下的就看你了。

哪个函数没有定义?请在调用函数和包含此JS片段的地方发布HTML为什么在
警报(“你的浏览器坏了!”)后返回
false
?您不在函数中,或者是吗?这可能是由于函数中的语法错误造成的。如果可以,请使用Firebug或类似的方法来查看发生了什么。Darin有一个很好的观点。如果浏览器在无效的“return false”上失败,则不会定义wishAdd函数外部。在firefox中运行代码,并查看错误控制台中的“Return在函数外部”看起来不错,但是我如何设置它来处理不同onclick事件的多个函数?@caio我已经准备好将一个项目添加到我的愿望列表中,但是删除它会导致愿望列表完全消失,并且愿望条目不会从数据库中删除。但是Firebug中没有错误。原始帖子会用新代码更新…如果你让我来解决你的问题你的代码将被完全更改,也许你不会理解,好吗?@caio好的。你能举一个例子说明如何处理多个onclick事件吗?@caio如果所有onclick事件都在按钮上,但有些是链接和其他按钮,它们都做不同的事情,那么你的编辑就可以了。继续e所有按钮或所有链接的操作都不起作用。
<!doctype html>

<html>
    <head>
        <script>
            Element.prototype.postAjax = function (params, url) {
                var ajaxRequest;

                try {
                    // Opera 8.0+, Firefox, Safari
                    ajaxRequest = new XMLHttpRequest();
                }
                catch (e) {
                    // Internet Explorer Browsers
                    try {
                        ajaxRequest = new ActiveXObject ("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                            ajaxRequest = new ActiveXObject ("Microsoft.XMLHTTP");
                        }
                        catch (e) {
                            // Something went wrong
                            alert("Your browser broke!");
                            return false;
                        }
                    }
                }

                ajaxRequest.open ("POST", url, true);

                ajaxRequest.setRequestHeader ("Content-type", "application/x-www-form-urlencoded");
                ajaxRequest.setRequestHeader ("Content-length", params.length);
                ajaxRequest.setRequestHeader ("Connection", "close");

                ajaxRequest.send (params);

                var _this = this;

                ajaxRequest.onreadystatechange = function () {
                    if (ajaxRequest.readyState === 4) {
                        if (ajaxRequest.status === 200) {
                            _this.innerHTML = ajaxRequest.responseText;
                        }
                        else {
                            alert ("Error, please try again.");
                        }
                    }
                }
            }

            window.addEventListener ("load", function () {
                var button = document.getElementsByTagName ("input")[0];
                var id = 1; // Don't know where you get it
                var wishlist = document.getElementById ("wishlist");

                button.addEventListener ("click", function () {
                    wishlist.postAjax ("mode=wishlist&id=" + id, "ajax.php");
                }, false);
            }, false);
        </script>

        <title></title>
    </head>

    <body>
        <input type = "button" value = "Click me man !" />

        <div id = "wishlist"></div>
    </body>
</html>
document.body.addEventListener ("click", function (event) {
    var target = event.target;

    if (target.nodeName === "INPUT") {
        if (target.getAttribute ("type") === "button") {
            // Every single button inside your document
        }
    }
}, false);