2016-12-14 5 views
0

divとform要素を持つ単純なhtmlページがあり、ページが読み込まれた後に単純にアニメーション表示されます。ここでCSSアニメーションを呼び出すためのJavascriptコードが機能しません

はHTMLコードです:

<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"> 
    <link rel="stylesheet" type="text/css" href="styles/global.css">   
    <link rel="stylesheet" type="text/css" href="styles/index.css"> 
    <script src="scripts.js"></script> 
    <title></title> 
</head> 
<body> 
    <div id="wholepage"> 
     <div id="loginformdiv"> 
     </div> 
     <form id="loginform"> 
      <p id="loginformh">Login</p> 
      <input type="text" id="loginformusr" placeholder="Uživatelské jméno"> 
      <input type="password" id="loginformpw" placeholder="Heslo"> 
      <input type="button" value="›" id="loginformsubmit" onclick="loginformcheck()"> 
      </p><p id="loginformalert"></p>  
     </form> 
    </div> 
</html> 

私はdiv要素やフォームの4つのアニメーションを作成しました。最初の2つは、index.htmlがロードされた後にロードされるはずです。これら2つは正常に動作しています。しかし、最後の2つのアニメーションは、ユーザーヒットボタンの後に読み込まれ、フォームが正しく入力されているかどうかをjsコードがチェックします。これらのアニメーションが終了したら、afterlogin.htmlページに読み込まれます。ここで

は私のCSSコードの一部です:ここで

@keyframes afterstartdiv { 
from {opacity: 0;} 
to {opacity: 0.5;} 
} 

@keyframes afterstartform { 
from {opacity: 0;} 
to {opacity: 1;} 
} 

@keyframes afterlogindiv { 
from {opacity: 0.5;} 
to {opacity: 0;} 
} 

@keyframes afterloginform { 
from {opacity: 1;} 
to {opacity: 0;} 
} 

は私の全体のjsのコードです:

function loginformcheck() { 
var username = document.getElementById("loginformusr").value; 
var password = document.getElementById("loginformpw").value; 


if (username.length == 0 && password.length == 0) 
{ 
    document.getElementById("loginformalert").innerHTML = "Vyplňte přihlašovací údaje!"; 
} 
else if (username.length == 0) 
{ 
    document.getElementById("loginformalert").innerHTML = "Vyplňte přihlašovací jméno!"; 
} 
else if (password.length == 0) 
{ 
    document.getElementById("loginformalert").innerHTML = "Vyplňte heslo!"; 
} 
else if (!username.match(/^\w+$/) || !password.match(/^\w+$/)) 
{ 
    document.getElementById("loginformalert").innerHTML = "Uživatelské jméno nebo heslo je nesprávné!"; 
} 
else if (username.match(/^\w+$/) && password.match(/^\w+$/)) 
{ 
    login(); 
} 
} 

function login() { 
var username = document.getElementById("loginformusr").value; 
var password = document.getElementById("loginformpw").value; 
var alert = "Uživatelské jméno nebo heslo je nesprávné!"; 

if (username.match("jakub") && password.match("poiuz")) 
{ 
    function afterloginanimation(timer) { 
     setTimeout(function(){ 
      if (timer == -1) { 
       window.location.href = "afterlogin.html"; 
      } 
     }, 1500); 
    } 
    document.getElementById("loginformdiv").style.AnimationName = "afterlogindiv"; 
    document.getElementById("loginformdiv").style.AnimationDuration = "1.5s"; 
    document.getElementById("loginform").style.AnimationName = "afterloginform"; 
    document.getElementById("loginform").style.AnimationDuration = "1.5s"; 
} 
else 
{ 
    document.getElementById("loginformalert").innerHTML = alert; 
} 

}

+0

あなたのJSコードはどこですか?それは頭の中で呼ばれていますか?あるいは、文書が準備されるのを待っていますか? –

+0

jsコード全体は外部ファイル "scripts.js"にあります。場所に問題はありません。フォームの正しい塗りつぶしをチェックする関数はうまくいきます。 – Grakon2702

+0

こんにちは、単なる考え:インラインアニメーションプロパティを設定するのではなく、すべてのクラスを定義してターゲット要素に追加することができますか? 例: #loginformdiv.animating { アニメーション:afterlogindiv 1.5s; } #loginform.animating { アニメーション:afterloginform 1.5s; } –

答えて

0

構文は、私にはその上で正しく見える、あなたは試してみましたタイムアウトを少し長く設定するだけですか?また、あなたはそれがdoesntの仕事を言うときコンソールエラーを取得しますか?そうでない場合は、コンソールがタイムアウト機能の中にログを記録して、実際に起動していることを確認できますか?

+0

ここにコンソールエラーがあります:SCRIPT5007:未定義またはnull参照のプロパティ 'AnimationName'を設定できません – Grakon2702

+0

これはまっすぐな好奇心ですが、これを含めてみると、

+0

メタタグを追加しても問題は変わりません。実際には、IE 11で奇妙なことが起きます。私は主にMicrosoft Edgeを使用していると言って忘れました。 – Grakon2702

関連する問題