Javascript 发现未定义的js变量

Javascript 发现未定义的js变量,javascript,jquery,Javascript,Jquery,我正在使用.Net中带有部分视图的模式创建一个联系我们表单。除了这个js,我还有其他的工作。我在让这个js识别cuLink和cuLinkClass时遇到问题。ContactUs功能基于QuickView两者之间的唯一区别(理论上)是ContactUs没有创建按钮和模式,只是创建模式。如蒙协助,将不胜感激 var ContactUs = (function () { var cuLinkClass = 'ico ico-email contact-form'; function

我正在使用.Net中带有部分视图的模式创建一个联系我们表单。除了这个js,我还有其他的工作。我在让这个js识别
cuLink
cuLinkClass
时遇到问题。
ContactUs
功能基于
QuickView
两者之间的唯一区别(理论上)是
ContactUs
没有创建按钮和模式,只是创建模式。如蒙协助,将不胜感激

var ContactUs = (function () {

    var cuLinkClass = 'ico ico-email contact-form';

    function obj(item) {

        ContactUs.initialize(item);

        return this;

    };

    obj.onClick = function (evt) {
        var target = evt.currentTarget || evt.srcElement;
        var url = target.getAttribute('data-rel');
        var modal = jQuery('#contactUsModal.modal-content');

        modal.innerHTML = '<div class="modal-body"> Loading...</div>';
        QuickView.centerElement(modal.parentNode);

        jQuery.ajax({
            url: url,
            sucess: function (m, html) {
                setTimeout(function () {
                    m.innerHTML = html;
                    QuickView.centerElement(m.parentNode);
                }, 30);

            }.bind(null, modal)
        });
    };

    obj.composeButton = function() {
        var cuLink = document.getElementsByClassName(cuLinkClass);
        cuLink.setAttribute('data-target', '#contactUsModal');
        cuLink.setAttribute('data-rel', item.getAttribute('rel'));

    }

    obj.initialize = function (item) {

        item.appendChild(cuLink);
        if (cuLink.addEventListener) cuLink.addEventListener('click', ContactUs.onClick);
        if (cuLink.attachEvent) cuLink.attachEvent('onclick', ContactUs.onClick);

    }

    return obj;
    })();

    var QuickView = (function () {

    var buttonClassName = 'quick-view-btn';
    //var modalContentClassName = 'modal-content';
    var miniClassName = 'mini';
    var windowWidth = 750;

    function obj(item) {

        QuickView.initialize(item);

        return this;
    };


    obj.centerElement = function (elem) {
        elem.style.marginLeft = parseInt(windowWidth / -2) + 'px';
        elem.style.marginTop = parseInt(parseInt(jQuery(elem).height()) / -2) + 'px';
    };


    obj.composeButton = function (isMini) {

        var button = document.createElement('button');

        button.setAttribute('class', buttonClassName);
        button.setAttribute('data-toggle', 'modal');
        button.setAttribute('data-target', '#quickViewModal');

        // if mini button, use magnify style instead
        if (isMini) {
            button.setAttribute('class', buttonClassName + ' ' + miniClassName + ' ' + currentculture);
            button.innerHTML = '<i class="ico ico-magnify"></i>';
        } else
            button.innerHTML = quickViewText;

        return button;
    };


    obj.handleButtonClick = function (evt) {

        var target = evt.currentTarget || evt.srcElement;
        var url = target.getAttribute('data-rel');
        var modal = jQuery('.modal-content')[0];

        // add loading message
        modal.innerHTML = '<div class="modal-body">Loading...</div>';
        QuickView.centerElement(modal.parentNode);

        // AJAX call to load details page
        jQuery.ajax({
            url: url,
            success: function (m, html) {
                // introduce short delay to allow
                // animation to render HTML contents
                setTimeout(function () {
                    m.innerHTML = html;
                    QuickView.centerElement(m.parentNode);
                }, 150);
            }.bind(null, modal)
        });
    };


    obj.initialize = function (item) {

        var isMini = jQuery(item).hasClass(miniClassName);
        var button = QuickView.composeButton(isMini);

        // add rel to button
        button.setAttribute('data-rel', item.getAttribute('rel'));

        // add button to item
        item.appendChild(button);

        // add event listeners
        if (button.addEventListener) button.addEventListener('click', QuickView.handleButtonClick);
        else if (button.attachEvent) button.attachEvent('onclick', QuickView.handleButtonClick);
    };


    return obj;

})();
var ContactUs=(函数(){
var cuLinkClass=‘ico ico电子邮件联系表’;
功能obj(项目){
联系人初始化(项目);
归还这个;
};
obj.onClick=函数(evt){
var target=evt.currentTarget | | evt.src元素;
var url=target.getAttribute('data-rel');
var modal=jQuery('#contactUsModal.modal content');
modal.innerHTML='Loading…';
QuickView.centerElement(modal.parentNode);
jQuery.ajax({
url:url,
suces:function(m,html){
setTimeout(函数(){
m、 innerHTML=html;
QuickView.centerElement(m.parentNode);
}, 30);
}.bind(空,模态)
});
};
obj.composeButton=函数(){
var cuLink=document.getElementsByClassName(cuLinkClass);
setAttribute('data-target','#contactUsModal');
cuLink.setAttribute('data-rel',item.getAttribute('rel');
}
obj.initialize=功能(项目){
项目.儿童(库林克);
如果(cuLink.addEventListener)cuLink.addEventListener('click',ContactUs.onClick));
如果(cuLink.attachEvent)cuLink.attachEvent('onclick',ContactUs.onclick);
}
返回obj;
})();
var QuickView=(函数(){
var buttonClassName='快速查看btn';
//var modalContentClassName=‘模态内容’;
var miniClassName='mini';
窗宽=750;
功能obj(项目){
初始化(项目);
归还这个;
};
obj.centerElement=功能(elem){
elem.style.marginLeft=parseInt(windowWidth/-2)+“px”;
elem.style.marginTop=parseInt(parseInt(jQuery(elem.height())/-2)+px';
};
obj.composeButton=函数(isMini){
var button=document.createElement('button');
setAttribute('class',buttonClassName);
setAttribute('data-toggle','modal');
setAttribute('data-target','#quickViewModal');
//如果是迷你按钮,请改用放大样式
如果(伊斯米尼){
button.setAttribute('class',buttonClassName+''+miniClassName+''+currentculture);
button.innerHTML='';
}否则
button.innerHTML=quickViewText;
返回按钮;
};
obj.handleButtonClick=功能(evt){
var target=evt.currentTarget | | evt.src元素;
var url=target.getAttribute('data-rel');
var modal=jQuery('.modal content')[0];
//添加加载消息
modal.innerHTML='Loading…';
QuickView.centerElement(modal.parentNode);
//加载详细信息页面的AJAX调用
jQuery.ajax({
url:url,
成功:函数(m,html){
//引入短延迟以允许
//渲染HTML内容的动画
setTimeout(函数(){
m、 innerHTML=html;
QuickView.centerElement(m.parentNode);
}, 150);
}.bind(空,模态)
});
};
obj.initialize=功能(项目){
var isMini=jQuery(item).hasClass(miniClassName);
var按钮=QuickView.composeButton(isMini);
//添加rel到按钮
button.setAttribute('data-rel',item.getAttribute('rel');
//将按钮添加到项目
项。追加子项(按钮);
//添加事件侦听器
if(button.addEventListener)button.addEventListener('click',QuickView.handleButtonClick);
else if(button.attachEvent)button.attachEvent('onclick',QuickView.handleButtonClick);
};
返回obj;
})();

您需要在其他人可以阅读的范围内定义库链接。您可以在已定义的
cuLinkClass
位置创建变量:

var cuLinkClass = 'ico ico-email contact-form';
var cuLink;
然后您可以将其分配到相同的位置,但忽略
var

cuLink = document.getElementsByClassName(cuLinkClass);
或者,您可以将变量附加到
obj
,然后将其引用为
obj.cuLink
(或者
this.cuLink
,如果您了解上下文):

我建议您学习一些基本的JS概念,如原型和上下文的使用方法。

尝试一下(在
文档就绪
之外定义您的变量):


接触性var;
库林克等级;
$(文档).ready(函数(){
ContactUs=(函数(){
cuLinkClass=‘ico ico电子邮件联系表’;
功能obj(项目){
联系人初始化(项目);
归还这个;
};
});
使用jquery解决

  var ContactUs = (function() {
jQuery('#exportcc > li:nth-child(1) > a').click(function () {
    var url = jQuery('#exportcc > li:nth-child(1) > a').data('url');

    jQuery.get(url, function(data) {
        jQuery('#contactUsModalContent > .modal-content').html(data);

        jQuery('#contactUsModal').modal('show');
    });
   }); 
});

这是一堆代码,没有HTML可供运行。一般来说,最好隔离问题,在类似JSFIDLE的东西上复制,只发布完整的细节。您需要向我们提供更多信息。。
<script language="JavaScript" type="text/JavaScript">
var ContactUs;
var cuLinkClass;
$(document).ready(function(){
    ContactUs = (function () {
    cuLinkClass = 'ico ico-email contact-form';

    function obj(item) {
       ContactUs.initialize(item);
       return this;
    };

});
</script>
  var ContactUs = (function() {
jQuery('#exportcc > li:nth-child(1) > a').click(function () {
    var url = jQuery('#exportcc > li:nth-child(1) > a').data('url');

    jQuery.get(url, function(data) {
        jQuery('#contactUsModalContent > .modal-content').html(data);

        jQuery('#contactUsModal').modal('show');
    });
   }); 
});