Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ReferenceError:“引用错误”;productfancybox未定义“;一次点击事件_Asp.net Mvc_Razor_Nopcommerce - Fatal编程技术网

Asp.net mvc ReferenceError:“引用错误”;productfancybox未定义“;一次点击事件

Asp.net mvc ReferenceError:“引用错误”;productfancybox未定义“;一次点击事件,asp.net-mvc,razor,nopcommerce,Asp.net Mvc,Razor,Nopcommerce,我正在尝试在href linkonClickevent上的fancybox中显示产品。 但是,当单击事件发生时,它会给出如下错误 ReferenceError:未定义productfancybox 我尝试过以下代码: HomePageProducts.cshtml: <div class="herry-pic-cols brdr"> <ul id="homePageFeaturedProductInit"> @for

我正在尝试在href link
onClick
event上的fancybox中显示产品。 但是,当单击事件发生时,它会给出如下错误

ReferenceError:未定义productfancybox

我尝试过以下代码:

HomePageProducts.cshtml:

<div class="herry-pic-cols brdr">
            <ul id="homePageFeaturedProductInit">
                @foreach (var item in Model)
                {
                    <li>
                        <span id="@item.Id">
                           @Html.Partial("_CategoryBox", item)
                           <a id="Link" href="#" onClick ="productfancybox(@item.Id);">Link</a>
                        </span>
                    </li>    
                }
            </ul>

            <div class="clear"></div>
            <a class="prev-btn2" href="#"></a>
            <a class="next-btn2" href="#"></a>
        </div>

      <script type="text/javascript">
        $(window).load(function () {

            function productfancybox(id) {

                $.fancybox({
                    'width': '80%',
                    'height': '100%',
                    'autoScale': true,
                    'transitionIn': 'fade',
                    'transitionOut': 'fade',
                    'href': '/Category/CategoryProductsFancyBox?Id='+id,
                    'type': 'iframe',
                    'onClosed': function () {
                        window.location.href = "f?p=&APP_ID.:211:&SESSION.::&DEBUG.::";
                    }
                });

            }

        });
        </script>

    @foreach(模型中的var项目) {
  • @Html.Partial(“_CategoryBox”,item)
  • }
$(窗口)。加载(函数(){ 函数productfancybox(id){ $.fancybox({ “宽度”:“80%”, “高度”:“100%”, “自动缩放”:正确, “transitionIn”:“fade”, “transitionOut”:“fade”, 'href':'/Category/CategoryProductsFancyBox?Id='+Id, 'type':'iframe', “onClosed”:函数(){ window.location.href=“f?p=&APP_ID.:211:&SESSION:&DEBUG:”; } }); } });
为什么
onClick
事件不起作用?

我遗漏了什么吗?

您的函数,
productfancybox
的作用域是在窗口加载时调用的匿名函数。一旦发生,它就会消失,不再存在

相反,您需要在全局名称空间中定义函数(即不在这样的调用中),或者最好创建一个名称空间并在其中定义函数:

var MyAwesomeNamespace = MyAwesomeNamespace || {};

MyAwesomeNamespace.productfancybox = function (id) {
    ...
}
然后,您可以稍后拨打:

MyAwesomeNamespace.productfancybox(1);
在脚本运行之后,在代码中的任何位置。这只是一个简单的例子。有更好的方法为应用程序设置库。这里有一个基本的入门课程,你可以从中学习: