0

我有一个带有 if 语句流的函数。如果语句为真,它会使用 innerHTML 写回文档。在 innerHTML 中,我可以添加 p 标签和文本,但只要我添加<a href>一行,它就会给我一个“未捕获的语法错误:意外的标识符”错误。我究竟做错了什么?错误在calage()具有以下代码段的函数内:

if((calyear == 2010 && calmon > 10) || (calyear == 2011 && calmon < 11)) {
        console.log("They should be in the 2YO");
        document.getElementById("demo").innerHTML="<p>Your student would more than likely enter the 2YO class. The 2YO students will have class at the Nanshan campus. To apply, please fill out the following application.</p> <a href="http://qsishekou.org" target="_blank">QSI Shekou!</a>";
        }

完整的 HTML 文件如下。感谢您的帮助!

    <!DOCTYPE HTML>

<html>
    <head> </head>
    <body>
<table cellpadding=0 cellspacing=0 style="width:95%;" align="center">
<tr><td align="center" class="abouttabletext"><br>
<script type="text/javascript">
var startyear = "1995";
var endyear = "2013";
var dat = new Date();
var curday = dat.getDate();
var curmon = dat.getMonth()+1;
var curyear = dat.getFullYear();
function checkleapyear(datea)
{
    if(datea.getYear()%4 == 0)
    {
        if(datea.getYear()% 10 != 0)
        {
            return true;
        }
        else
        {
            if(datea.getYear()% 400 == 0)
                return true;
            else
                return false;
        }
    }
return false;
}
function DaysInMonth(Y, M) {
    with (new Date(Y, M, 1, 12)) {
        setDate(0);
        return getDate();
    }
}
function datediff(date1, date2) {
    var y1 = date1.getFullYear(), m1 = date1.getMonth(), d1 = date1.getDate(),
     y2 = date2.getFullYear(), m2 = date2.getMonth(), d2 = date2.getDate();
    if (d1 < d2) {
        m1--;
        d1 += DaysInMonth(y2, m2);
    }
    if (m1 < m2) {
        y1--;
        m1 += 12;
    }
    return [y1 - y2, m1 - m2, d1 - d2];
}

function calage()
{
  var calday = document.birthday.day.options[document.birthday.day.selectedIndex].value;
  var calmon = document.birthday.month.options[document.birthday.month.selectedIndex].value;
  var calyear = document.birthday.year.options[document.birthday.year.selectedIndex].value;
    if(curday =="" || curmon=="" || curyear=="" || calday=="" || calmon=="" || calyear=="")
    {
        alert("please fill all the values and click go -");
    }   
    else
    {
        var curd = new Date(curyear,curmon-1,curday);
        var cald = new Date(calyear,calmon-1,calday);
        var diff =  Date.UTC(curyear,curmon,curday,0,0,0) - Date.UTC(calyear,calmon,calday,0,0,0);
        var dife = datediff(curd,cald);
        var monleft = (dife[0]*12)+dife[1];
        var secleft = diff/1000/60;
        var hrsleft = secleft/60;
        var daysleft = hrsleft/24;
        var as = parseInt(calyear)+dife[0]+1;
        var datee = diff/1000/60/60/24;
    }
    if((calyear == 2010 && calmon > 10) || (calyear == 2011 && calmon < 11)) {
        console.log("They should be in the 2YO");
        document.getElementById("demo").innerHTML="<p>Your student would more than likely enter the 2YO class. The 2YO students will have class at the Nanshan campus. To apply, please fill out the following application.</p> <a href="http://www.w3schools.com/" target="_blank">Visit W3Schools!</a>";
        }
        if((calyear == 2009 && calmon > 10) || (calyear == 2010 && calmon < 11)) {
        console.log("They should be in the 3YO");
        return 3;
    }
    if((calyear == 2008 && calmon > 10) || (calyear == 2009 && calmon < 11)) {
        console.log("They should be in the 4YO");
    }
    if((calyear == 2007 && calmon > 10) || (calyear == 2008 && calmon < 11)) {
        console.log("They should be in the 5YO");
    }
    if((calyear == 2006 && calmon > 10) || (calyear == 2007 && calmon < 11)) {
        console.log("They should be in the 6YO");
    }
    if((calyear == 2005 && calmon > 10) || (calyear == 2006 && calmon < 11)) {
        console.log("They should be in the 7YO");
    }
    if((calyear == 2004 && calmon > 10) || (calyear == 2005 && calmon < 11)) {
        console.log("They should be in the 8YO");
    }
    if((calyear == 2003 && calmon > 10) || (calyear == 2004 && calmon < 11)) {
        console.log("They should be in the 9YO");
    }
    if((calyear == 2002 && calmon > 10) || (calyear == 2003 && calmon < 11)) {
        console.log("They should be in the 10YO");
    }
    if((calyear == 2001 && calmon > 10) || (calyear == 2002 && calmon < 11)) {
        console.log("They should be in the 11YO");
    }
    if((calyear == 2000 && calmon > 10) || (calyear == 2001 && calmon < 11)) {
        console.log("They should be in the 12YO");
    }
    if((calyear == 1999 && calmon > 10) || (calyear == 2000 && calmon < 11)) {
        console.log("They should be in the 13YO");
    }
    if((calyear == 1998 && calmon > 10) || (calyear == 1999 && calmon < 11)) {
        console.log("They should be in the 14YO");
    }
    if((calyear == 1997 && calmon > 10) || (calyear == 1998 && calmon < 11)) {
        console.log("They should be in the 15YO");
    }
    if((calyear == 1996 && calmon > 10) || (calyear == 1997 && calmon < 11)) {
        console.log("They should be in the 16YO");
    }
    if((calyear == 1995 && calmon > 10) || (calyear == 1996 && calmon < 11)) {
        console.log("They should be in the 17YO");
    }
    if(calyear == 1995 && calmon < 11) {
        console.log("Your child is too old to attend QSI");
    }
}
</script>
<form name="birthday" action="">
Date<select name="day" size="1">
<script type="text/javascript">
 for(var j=1;j<32;j++)
   document.write("<option value="+j+">"+j+"</option>");
</script></select>&nbsp;
Month<select name="month" size="1">
<script type="text/javascript">
 for(var i=1;i<13;i++)
 document.write("<option value="+i+">"+i+"</option>");
</script></select>&nbsp;
Year
<select name="year" size="1">
<script type="text/javascript">
 for(var k=startyear;k<endyear;k++)
 document.write("<option value="+k+">"+k+"</option>");
</script></select> 
<br><br>
<input name="start" onclick="calage()" value="Calculate" type="button">
</form>
</td></tr></table>
<div id="demo">

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

2 回答 2

0

试试这个:

        document.getElementById("demo").innerHTML="<p>Your student would more than likely enter the 2YO class. The 2YO students will have class at the Nanshan campus. To apply, please fill out the following application.</p> <a href='http://qsishekou.org' target='_blank'>QSI Shekou!</a>";

用“”将字符串括起来,就像您所做的那样 - 所以使用 ' 来包围属性。

例如:

var str = "hello, I am" gonna go" here";

这将产生一个错误,因为您关闭字符串然后您不连接,因此异常。

所以,

var str = "hello, I am' gonna go' here";

将是适当的。

或者

var str = "hello, I am" + "gonna go here";

或者如果您必须使用双引号,则使用反斜杠。

var str = "hello, I am\" gonna go\" here";
于 2013-02-25T07:14:44.593 回答
0

就我而言,我已经按照@jamesemanon 的建议使用了简单的引号,但它仍然不起作用。在Android设备上没问题,IOS模拟器没问题,但是IOS设备失败了。
我的解决方案只是删除target="_blank"attr,然后在设备上链接工作。

于 2019-07-12T13:28:25.737 回答