0

基本上,我已经设置好了,当人们输入他们的代码时,它会将他们重定向到正确的页面。但是,由于某种原因,只有第一个 else if 有效。其他格式相同,但不起作用。有任何想法吗?

编辑:为了更清楚,底部的两个工作正常,所以它不会告诉你输入一个 RSVP 代码,但我不能在顶部添加比这两个代码更多的代码?

编辑2:所以如果我尝试输入“77050”,它只会说代码无效。这就是我所说的“不工作”。

编辑3:我上面也有这段代码。

<script type="text/javascript">

    var today = new Date();
    var seminarDate = new Date();
    seminarDate.setFullYear(2013, 10, 15);

    if ( today >= seminarDate )
            {
                window.alert("Seminar is over, sorry!");
            }

    </script>

        function myFunction()
        {

            var pincode = document.getElementById("pincode").value;

            if ( pincode === "76638" && today <= seminarDate ){
                window.location.assign("http://google.com");
            }

            else if ( pincode === "76265" && today <= seminarDate ){
                window.location.assign("http://google.com");
            }

            else if ( pincode === "77050" && today <= seminarDate ){
                window.location.assign("http://google.com");
            }

            else if ( pincode === "77283" && today <= seminarDate ){
                window.location.assign("http://google.com");
            }

            else if ( pincode === "77329" && today <= seminarDate ){
                window.location.assign("https://google.com");
            }

            else if ( pincode === "" ){
                document.getElementById("error").innerHTML = "Please enter your RSVP code.";
            }

            else if ( today >= seminarDate )
            {
                window.alert("Seminar is over.");
            }

            else {
                document.getElementById("error").innerHTML = "Code is invalid.";
            }

        };      

    </script>
4

2 回答 2

1

因此,根据我所看到的,我假设它seminarDate可能是从服务器填充的(这就是为什么它如下列出的原因):

var today = new Date();
var seminarDate = new Date();
seminarDate.setFullYear(2013, 10, 15);

这是伟大的。但是为了清理其中的一些内容(并且可能进行优化),如下所示:

// setup list of valid pincodes and their links
var validCodes = {
    '76638': 'http://google.com/',
    '76265': 'http://google.com/',
    '77050': 'http://google.com/',
    '77283': 'http://google.com/',
    '77329': 'http://google.com/'
};

// refactor the check out in to a reusable function so we can call it
// on page load and from `myFunction`
function seminarHasEnded()
{
    if ( today >= seminarDate )
    {
        window.alert("Seminar is over, sorry!");
        return true;
    }
    return false;
}
seminarHasEnded();

// refactored version of myFunction
function myFunction()
{
    //
    // 1st test--can we apply?
    //
    if ( seminarHasEnded() ) {
        return;
    }

    // store a couple of values and references. Also reset the error
    // box on every new attempt
    var pincode = document.getElementById('pincode').value,
        err = document.getElementById('error');
    err.textContent = '';

    //
    // 2nd test--did they enter something?
    //
    if ( !pincode || pincode.length == 0 ){
        err.textContent = 'Please enter your RSVP code.';
        return;
    }

    //
    // 3rd test--is the code valid?
    //

    // check pincode exists/is valid
    if ( validCodes[pincode] ){
        alert('You would have been redirected to ' + validCodes[pincode]);
        //window.location.assign(validCodes[pincode]);
    } else {
        err.textContent = 'Code is invalid';
    }
}

这将导致这样的事情:http: //jsfiddle.net/dqpnh/

但是,有几点注意事项:

  • 当您发现自己将相同的条件添加到多个 IF 语句时,是时候退后一步,看看如何以不同的方式完成。
  • 我用textContent了 over innerHTML,但这可以作为个人喜好来争论。
  • 这仍然JavaScript,因此查看该页面的任何人都会看到有效的 pin 和他们可以访问的 url。我建议使用表单提交,或者为了获得无缝体验,使用 AJAX 来执行此测试/查找。
于 2013-08-09T15:05:05.113 回答
0

您必须定义今天和研讨会日期。

   function myFunction(today, seminarDate) { // ?

        if ( today > seminarDate ) {
            window.alert("Seminar is over.");
            return;
        }

        var pincode = document.getElementById("pincode").value;

        if ( pincode === "" ) {
            document.getElementById("error").innerHTML = "Please enter your RSVP code.";
            return;
        }

        var pincodes = {
            "76638": "http://google.com",
            "76265": "http://google.com",
            "77050": "http://google.com",
            "77283": "http://google.com",
            "77329": "http://google.com"
        };

        if ( pincodes[pincode] !== undefined ) {
            window.location.assign(pincodes[pincode]);
            return;
        }

        document.getElementById("error").innerHTML = "Code is invalid.";

    }
于 2013-08-09T14:38:27.580 回答