2011-06-29 9 views
0

の設定の作業に私は、このページを作ることがjavascript.Itriedに新しいですが、何とか機能を短縮するのdoctype specification.Iを提供する上では動作しませんこの1
のJS関数は、DOCTYPE仕様

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 

を使用していますしかしspecifcationせず、それには、以下の罰金
の作品ファイルの完全なコードです:

<html> 
<head> 
<script language="javascript" > 
function show(){ 
document.getElementById("dynamic").style.display="block"; 
document.getElementById("dynamic").style.opacity=1; 
document.getElementById("dynamic").innerHTML="<table><tr>\n\t<td>Enter current password:</td><td><input type=\"password\" name=\"ppass\" size=\"45\"></td></tr><tr>\n<td>Enter new password:</td><td><input type=\"password\" name=\"npass1\" size=\"45\"></td></tr><tr>\n<td>Confirm password:</td><td><input type=\"password\" name=\"npass2\" size=\"45\"></td></tr><tr><td colspan=2><input type=submit value=\"Save\"></tr></table>\n"; 
document.setting.question[1].checked=true; 
} 
function hide(){ 
    if(document.forms.setting.question[0].checked!=true){ 
     fade("dynamic",50); 
     } 
    } 
function appear(){ 
    document.getElementById("dynamic").style.display="block"; 
    document.getElementById("dynamic").style.opacity=1; 
    document.getElementById("dynamic").innerHTML="<table><tr>\n\t<td>Enter password:</td><td><input type=\"password\" name=\"ppass\" size=\"45\"></td></tr><tr><td>Security Question:</td><td><input type=\"text\" name=\"ques\" size=\"100\"></td></tr><tr><td>Answer:</td><td><input type=\"password\" name=\"ans\" size=\"10\"></td></tr><tr><td colspan=2><input type=submit value=Save></tr></table>"; 
    document.setting.pass[1].checked=true; 
    } 
function disappear(){ 
    if(document.forms.setting.pass[1].checked){ 
     slide("dynamic",50); 
     } 
    } 
function fade(id,time){ 
    var i=0; 
    for(;i<10;i++){ 
     setTimeout("document.getElementById('dynamic').style.opacity-=0.1",(i*time)); 
     } 
    i--; 
    setTimeout("gayab("+id+")",(i*time)); 
    } 
function gayab(id){ 
    id.style.display="none"; 
    id.innerHTML=""; 
    id.style.opacity=1; 
    } 
function slide(id,time){ 
    var i=1; 
    document.getElementById(id).style.height=150; 
    var b=document.getElementById(id).style.height; 
    for(;i<15;i++){ 
     var j="shorten("+id+","+i+")"; 
     var k=i*time; 
     setTimeout(j,k); 
     } 
    var j="gone("+id+")"; 
    var k=i*time; 
    setTimeout(j,k); 
    } 
function shorten(id,i){ 
    id.style.height=(15-i)*10; 
    } 
function gone(id){ 
    id.style.display="none"; 
    id.style.height=150; 
    } 
</script> 
<noscript>You are Using an Outdated Browser.<br>Please Update Your Browser</noscript> 
<style> 
.options{float:left;} 
#dynamic{float:right;background-color:rgb(210,205,236);height:150px;opacity:1;overflow:hidden;width:720px;display:none;} 
.nofloat{clear:both;} 
</style> 
<title>Settings</title> 
</head> 
<body> 

<p align=right><a href=home.php>HOME</a> <a href=newpass.php>Change Password</a> <a href=logout.php>Log Out</a></p> 
<form action="changepass.php" method="post" name="setting"> 
<div class=options> 
<table> 
<tr> 
    <td>Change Password:</td> 
    <td><input type="radio" name="pass" onClick="show();" value="1" id="Yes"><label for="Yes">Yes</label></td> 
    <td><input type="radio" name="pass" onClick="hide();" value="0" id ="No" CHECKED><label for="No">No</label><br></td> 
</tr> 
<tr> 
    <td>Change Security Question:</td> 
    <td><input type="radio" name="question" onClick="appear();" value="1" id="yes"><label for="yes">Yes</label></td> 
    <td><input type="radio" name="question" onClick="disappear();" value="0" id="no" CHECKED><label for="no">No</label></td> 
</tr> 
</table> 
</div> 
<div id="dynamic"></div> 
<div class=nofloat> 
<a href=logout.php>Logout</a> 
</div> 
</form> 
</body> 
</html> 

助けてください。

+0

' - 「古い」ブラウザを使わなくてもJavaScriptを無効にすることは可能です。また、最新のバージョンのブラウザ(Lynxなど)を使用し、JavaScriptをサポートしていない可能性もあります。一般的には、[動作するものをベースにして](http://icant.co.uk/articles/pragmatic-progressive-enhancement/)しなければならない場合は、エラーメッセージが表示されていることを確認する必要があります少なくとも正確である。 – Quentin

+0

私が十分に強調することができない1つの_huge_ポイントは、時には文字列と時には要素を参照するのに 'id'を使用していることです。それは本当にお勧めしません。 'setTimeout'コードは、文字列やDOMノードを渡すかどうかにかかわらず、これらの' eval'の代わりに 'setTimeout(function(){slide(" dynamic ");}、1000)'のようなものを使用します。 -ish式。 – brymck

答えて

1

Doctypeは(フレームセットで構成されていないためにドキュメントに不適切であるにもかかわらず)標準モードを起動しています。

これは、さまざまなブラウザ間(およびブラウザと標準間)の矛盾を大幅に軽減するので、良いことです。

標準モードでは、ほとんどのブラウザがCSS仕様に準拠し、height: 27のようなものをエラーとして処理し、エラーの代わりに無視すると、height: 27pxに修正されます。

あなたのコードとの明らかな問題は、(他の人があるかもしれない、あなたは、コードのたくさんを掲載している)を使用すると、JavaScriptでCSSプロパティに番号を割り当てていることである...と数字は単位がありません。ほんの一例取るために

id.style.height=150; 

は次のようになります。

id.style.height = "150px"; 

あなたは、少なくとも一つの他の場所で同様のミスを犯します。

1

あなたのページがconsist of framesetsであると予想されるドキュメントタイプを設定していますが、そこには存在しません。別のDOCTYPEを使用する必要があります(例:transitional)。

+0

いいえ動作しません –