2013-02-25 82 views
0

我有一個if語句流的函數。如果語句正確,則使用innerHTML寫回文檔。在innerHTML中,我可以添加p標籤和文本,但只要添加了<a href>行,就會給我一個「Uncaught SyntaxError:意外標識符」錯誤。我究竟做錯了什麼?該錯誤位於calage()函數中,並帶有以下代碼片段:無法在innerHTML語句中創建href鏈接

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> 
+0

使用轉義字符。 – Nagri 2013-02-25 07:18:07

回答

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"; 
+0

哇。那太完美了!我沒有想到雙引號內的雙引號。謝謝! – Nathan 2013-02-25 07:20:44

+1

我正在嘗試,我必須等待5分鐘後才能將答案標記爲「已回答」。現在讓我試試吧......好的,你去了。再次感謝! – Nathan 2013-02-25 07:23:21