2016-06-20 5 views
2

私はjavasciptを学んでいますが、今はコードがありますが、これを動作させることができません.JavaScriptは実行されません。私はすでにウェブを検索しましたが、私は答えを見つけることができません。たぶんあなたたちはこれで私を助けることができます。 $(document).ready(function(){})関数の内部JavaScriptボタンイベントハンドラが動作しません

$('#click').click(function(){ 
    waarde.amount = waarde.amount + 1; 
    updateValues(); 
}); 

HTML

<html> 
<head> 
    <title>Text Game</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
    <script type="text/javascript" src="javascript.js"></script> 
</head> 
<body> 
     <button><span id="click">0</span></button> 
</body> 
</html> 

Javascriptを

// Variables 
var waarde = { 
    amount:2 
}; 

$(document).ready(function() { 
    updateValues(); 
}); 

function updateValues() { 
    document.getElementById("click").innerHTML = waarde.amount; 
} 

$('#click').click(function() { 
    waarde.amount = waarde.amount + 1; 
    updateValues(); 
}); 
+11

でボタンクリックイベントが欠落しているhere

で見ることができますJavaScriptの開発者、私はタイトルが大好きです。 :) – Veera

+1

エラーが生じますか? – Cristy

+2

働いていないとはどういう意味ですか?ご指定ください。また、JSで作業している間は常にブラウザコンソールを確認してください。あなたの '.click()'ハンドラが外部にある場合、 '$(document).ready(')を使用していません。 –

答えて

3

です次のいずれかまたはすべてを実行してください:

  1. scriptタグをフッターの末尾、つまり</body>タグの前に移動します(とにかく一般的にはベストプラクティス)。
  2. 将来の要素のイベントにバインドする場合はevent delegationを使用してください。
  3. すべてのJavaScriptをreadyハンドラに入れます。

問題#2:

あなたはbutton内部要素のクリックイベントハンドラをバインドするべきではありませんbuttonがイベントを消費し、それが伝播されないよう、それが仕様に準拠し、ブラウザでは動作しません子供たちに。

参照用HTML5 spec for buttonを参照してください:

コンテンツモデル:

フレージングのコンテンツを、ないインタラクティブなコンテンツの子孫があってはなりません。

代わりに、クリックイベントハンドラをbuttonにバインドします。

// Variables 
 
var waarde = { 
 
    amount: 2 
 
}; 
 

 
$(document).ready(function(){ 
 
    updateValues(); 
 
}); 
 

 
function updateValues(){ 
 
    document.getElementById("click").innerHTML = waarde.amount; 
 
} 
 

 
// Binding to the button element using event delegation. 
 
$(document).on('#button').click(function(){ 
 
    waarde.amount = waarde.amount + 1; 
 
    updateValues(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<button id="button"><span id="click">0</span></button>

あなたが何か他のもののためにspan要素を必要としない限り、また、あなたはそれを取り除くことができ、ちょうど使用:

document.getElementById("button").innerHTML = waarde.amount; 
+0

あなたの説明と例をありがとうございました。 – Stixs

2

あなたは、このコードを配置する必要があります。 $('#click')はまだDOMにはありません。

0

readyメソッド内にラップする必要があります。

問題#1:

要素はまだにバインドするためにDOMに存在しません

// Variables 
    var waarde = { 
     amount:2 
    }; 

    $(document).ready(function() { 

     $('#click').click(function() { 
     waarde.amount = waarde.amount + 1; 
     updateValues(); 
     }); 
    }); 

    function updateValues() { 
    document.getElementById("click").innerHTML = waarde.amount; 
    } 

は、ここであなたがここでの問題のカップルを持っているcodepenリンクhttp://codepen.io/anon/pen/vKXQza

0

2点:

あなたはあなたのjQueryイベントリスナをdocument.readyの中に置くべきです。

spanのclickイベントを処理する保証はありません。

// Variables 
 
var waarde = { 
 
amount:2 
 
}; 
 

 
$(document).ready(function(){ 
 
updateValues(); 
 

 
$('#click2').click(function(){ 
 
waarde.amount++; 
 
updateValues(); 
 
}); 
 

 
}); 
 

 
function updateValues(){ 
 
document.getElementById("click2").innerHTML = waarde.amount; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<button id="click2">0</button>

1

あなたのコードの問題では、JavaScriptがjsのファイルをロードするときにイベントハンドラを割り当てていないです。これは、準備関数で呼び出される必要があります。

var waarde = {  
    amount:2  
}; 

$(document).ready(function(){  
    $('#click').click(function(){ 

     waarde.amount = waarde.amount + 1;  
     updateValues();  
    }); 

}); 

function updateValues(){  
    document.getElementById("click").innerHTML = waarde.amount;  
} 
2

あなたはdocument.ready

var waarde = { 
     amount: 2 
    }; 

    $(document).ready(function() { 
     $('#click').click(function() { 
      waarde.amount = waarde.amount + 1; 
      updateValues(); 

     }); 
     updateValues(); 
    }); 

    function updateValues() { 
     document.getElementById("click").innerHTML = waarde.amount; 
    } 
0

にイベントを書き込む "をクリックして" する必要があなたの問題の解決策は、あなたがしたよう$(document).ready(function(){}(;

関連する問題