2013-11-25 34 views
0

我想單擊鏈接後顯示一個表單。在同一頁上。爲什麼這段代碼不工作?JavaScript onclick不顯示在頁

<a href="javascript:;" onclick="forgot();" class="txtmenu">Click Here if you forgot your password</a> 

<script type='text/javascript'> 
function forgot() 
{ 
    document.write(" 

<form action=\"<?php echo $_SERVER['PHP_SELF']?>\" method=\"post\" > 
<table width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\"> 
    <tr> 
    <td>Enter your email</td> 
    </tr> 
    <tr> 
    <td><input type=\"text\" name=\"username\" maxlength=\"40\" class=\"form-field\" ><input class=\"submit-button\" type=\"submit\" name=\"forgot\" value=\"SEND MY PASS\" /></td> 
    </tr> 
</table> 
</form> 

"); 
} 
</script> 
+2

爲什麼你會永遠使用文件撰寫來寫這樣的一個完整的表格,讓我的眼睛受傷,10個獨角獸剛死! – adeneo

+0

頁面加載後,'document.write'會覆蓋當前的'document'。你需要把它放在一個'div'或者覆蓋當前內容的地方 –

+1

或者,你可以用'style ='display:none;''來輸出表單,然後改變它。 –

回答

0

您必須在多行字符串的所有行末尾添加一個\符號。

像:

function forgot() 
{ 
document.write("\ 
<form action=\"<?php echo $_SERVER['PHP_SELF']?>\" method=\"post\" >\ 
<table width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\ 
    <tr>\ 
    <td>Enter your email</td>\ 
    </tr>\ 
    <tr>\ 
    <td><input type=\"text\" name=\"username\" maxlength=\"40\" class=\"form-field\" ><input class=\"submit-button\" type=\"submit\" name=\"forgot\" value=\"SEND MY PASS\" /></td>\ 
    </tr>\ 
</table>\ 
</form>\ 
"); 
} 
+0

我試過了,仍然沒有工作。 – user3011784

+0

@ user3011784我試過了[這裏](http://hqnetworks.pl/st_910.html),它的工作原理。 Mayby在你的代碼中有其他地方存在錯誤? – Wilq

0

它不工作,因爲你不能分割多行這樣的字符串。雖然我不會推薦與文件撰寫做你的方式,你可以這樣修復:

function forgot() 
{ 
    document.write(

"<form action=\"<?php echo $_SERVER['PHP_SELF']?>\" method=\"post\" > " + 
"<table width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"" + 
     "align=\"center\">" + 
    "<tr>"+ 
    "<td>Enter your email</td>"+ 
    "</tr>"+ 
    "<tr>"+ 
    "<td><input type=\"text\" name=\"username\" maxlength=\"40\""+ "class=\"form-field\" ><input class=\"submit-button\" type=\"submit\""+ "name=\"forgot\" value=\"SEND MY PASS\" /></td>"+ 
    "</tr></table></form>" 

); 
} 

這是醜陋的,但如果你將要使用document.write那麼它does not真正的問題一樣多;)

0

你不應該只是文件撰寫後文件加載完畢。它不會讓你有任何好處。您應該爲元素設置一些id,並在稍後發生某些事件時對其進行修改。

例如,您創建一個div其中id =「myDIV」,並使其不可見和的onclick你只是

var itisMyDiv = document.getElementById("myDIV"); 
itIsMyDiv.style.visibility = "visible"; 

或類似的東西。

0

您必須在多行字符串的所有行末尾添加\符號或使用字符串連接(請參閱here)。

<a href="javascript:;" onclick="forgot()" class="txtmenu">Click Here if you forgot your password</a> 
<script type='text/javascript'> 
    function forgot() 
    { 
    document.write("\ 
    <form action=\"<?php echo $_SERVER['PHP_SELF']?>\" method=\"post\" >\ 
    <table width=\"300\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">\ 
     <tr>\ 
     <td>Enter your email</td>\ 
     </tr>\ 
     <tr>\ 
     <td><input type=\"text\" name=\"username\" maxlength=\"40\" class=\"form-field\" ><input class=\"submit-button\" type=\"submit\" name=\"forgot\" value=\"SEND MY PASS\" /></td>\ 
     </tr>\ 
    </table>\ 
    </form>\ 
    "); 
    } 
</script> 

使用document.write()是壞主意,因爲它會覆蓋整個文檔。快速和更好的方法是有一些div,一個id屬性分配到該分區,然後在該分區使用document.getElementByIdforgot()功能retrive並通過指定的字符串innerHTML財產更換內容。