私はそれを理解していません。私は検索して検索しましたが、これについては何が「正しい」のかわかりません。
3 つの例があります。
1) Fiddle 1.0
ここにはhtml
with がonlick="function"
あり、javascript
そこにも関数があり、正常に動作します
<span class="classic one" onclick="someFunction(this,'one')">CLICK HERE</span>
<script type="text/javascript">
function someFunction(obj,nr) {
var string = $(obj).attr('class');
$('.result').text( string );
}
</script>
2) Fiddle 2.0 次に、関数をスクリプト セクションに移動すると (一種の .js ファイルに移動します)、「ReferenceError: someFunction が定義されていません」というエラーが表示されます。
ここから質問が始まります
3)フィドル 3 これで、.on(click で常に正常に動作するドキュメント準備完了関数が呼び出されました。この関数は、docuemnt.ready() の外部にある別の関数を呼び出しており、正常に動作します。
それで質問です。関数を定義する必要があるのはいつですか? AND WHY 常に機能しますか?
ありがとうございました!
例 3) のすべてのコードは次のようになります。
<div class="result">result</div>
<span class="classic one" onclick="someFunction(this,'one')">CLICK HERE</span>
<span class="classic two" onclick="someFunction(this,'two')">CLICK HERE</span>
<span class="classic three" onclick="someFunction(this,'three')">CLICK HERE</span>
<span class="classic four" onclick="someFunction(this,'four')">CLICK HERE</span>
<div class="ready">ready</div>
<span class="callOtherFunction">Call other function</span>
<script type="text/javascript">
$(document).ready(function(){
$('.ready').text( 'dom is ready' );
function someFunction(obj,nr) {
var string = $(obj).attr('class');
$('.result').text( string );
}
$( "span.callOtherFunction" ).on({
click: function() {
$(this).css("color","red");
$(this).addClass("xyz");
otherFunctionCallingFunction($(this));
}
});
});
function otherFunctionCallingFunction($me) {
$('.callOtherFunction').append( ' --> ' + $me.attr('class') );
}
</script>