【问题标题】:Why won't this javascript parse?为什么这个javascript不解析?
【发布时间】:2013-05-01 11:48:32
【问题描述】:

我似乎已经准备好了,

<script language="javascript" type="text/javascript" 
src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>

<script type="text/javascript" src="js/mailing-list.js"></script>

在标题中,mailing-list.js 在 js 文件夹中。然而由于某种原因,它似乎没有解析。我已经粘贴了下面的内联代码 - 有什么想法吗?

var emailEntered,
nameVal,
compVal,
foneVal,
cityVal,

$(document).ready(function () {
    $("#SendButton").click(function () {
        $(".error").hide();
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        var emailaddressVal = $("#email").val();

        if (emailaddressVal == '') {
            $("#message").html('<span class="error">Enter your email address before submitting.</span>');
            return false;
        } else if (!emailReg.test(emailaddressVal)) {
            $("#message").html("<span class='error'>That is not an email address.&nbsp;  Typo?</span>");
            return false;
        } else {
            emailEntered = escape($('#email').val());
        }

        nameVal = escape($("#name").val());
        emailVal = escape($("#email").val());
        compVal = escape($("#comp").val());
        foneVal = escape($("#fone").val());
        cityVal = escape($("#city").val());
    });
    $('#signup').submit(function () {
        $("#message").html("<span class='error'>Adding your email address...</span>");
        $.ajax({
            url: 'inc/store-address.php',
            data: 'ajax=true&email=' + emailEntered + '&name=' + nameVal + '&comp=' + compVal + '&fone=' + foneVal + '&city=' + cityVal,
            success: function (msg) {
                $('#message').html(msg);
            }
        });
        return false;
    });
});

更新:通过解析,我的意思是对 mailing-list.js 的调用被忽略了。

【问题讨论】:

  • “似乎无法解析”是什么意思?发生什么了?你遇到了什么错误?
  • “它不解析”是什么意思?有什么错误?
  • 通过解析我的意思是
  • 使用内置的开发者控制台。它可以为您提供帮助。

标签: javascript parsing mailchimp


【解决方案1】:
var emailEntered,
    nameVal,
    compVal,
    foneVal,
    cityVal,

应该是:

var emailEntered,
    nameVal,
    compVal,
    foneVal,
    cityVal;

注意末尾的分号。

【讨论】:

  • 另外,这些变量声明确实应该在匿名函数声明中。
  • 什么是匿名函数声明,Alnitak?
  • 在 JS 中,所有变量的作用域都是 function() {} 块的本地。如果你想声明一些变量,不要在文件级别声明它们,它们将是全局变量,而是在函数内部,并且越接近你使用它们的位置。
【解决方案2】:

您应该在编写代码时对代码运行静态代码分析器,例如 jshint

test.js: line 7, col 6, Missing semicolon.
test.js: line 13, col 36, Expected '===' and instead saw '=='.

您首先会看到一些语法错误。然后,您应该打开您的 javascript 控制台并查看错误是什么。通常口译员会提供很多信息。

顺便说一句,第二个警告并不是真正的错误,而是在 javascript 中进行相等检查时的一个好习惯。

关于你的编辑,你应该使用像 firebug 这样的脚本(或任何其他你可以在你喜欢的浏览器中获得的 webdev 工具)并检查它是否可以获得你正在编写的脚本。 它是否返回404?然后检查路径。它会返回 403 吗?然后检查权限...

【讨论】:

    【解决方案3】:

    我不知道您所说的“不解析”是什么意思,但您应该检查开发人员控制台(查看浏览器的菜单)。 还有:

     var emailEntered,
            nameVal,
            compVal,
            foneVal,
            cityVal,
    

    应该是:

     var emailEntered,
            nameVal,
            compVal,
            foneVal,
            cityVal;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多