我有一个if语句流的函数。如果语句为true,则使用innerHTML写回文档。在innerHTML中我可以添加p标签和文本,但是只要我添加<a href>
行,它就会给我一个“Uncaught SyntaxError:Unexpected identifier”错误。我究竟做错了什么?错误在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>
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>
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>
答案 0 :(得分: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";
答案 1 :(得分:0)
就我而言,我已经使用了简单的引号,如@jamesemanon所建议的那样,但仍然无法正常工作。在Android设备上没问题,IOS模拟器没问题,但是IOS设备失败了。
对我来说,解决方案是删除target="_blank"
attr,然后在设备上进行链接。