2016-06-29 11 views
1

助けが必要です。私はonclick関数の中にthisキーワードを渡しています。 onclickイベントを使用せずに同じ関数を呼び出す必要がある場合は、javascriptを使用してどのように呼び出されますか。以下のシナリオを説明しています。上記のコードでjavascriptのonclick関数の外でこのキーワードを渡す方法

<input name="optional_0_0_ans" id="optional_0_0_ans" class="form-control firstsec" placeholder="Answer" value="" type="text"> <button type="button" class="btn btn-sm btn-success" style="line-height:12px;" onclick="createNew(this,0,0,1);"><i class="fa fa-plus" aria-hidden="true"></i></button> 

<script> 
function createNew(evt,index,childindex,hidevalue){ 


} 
</script> 

私はonclickのevent.Hereものと想定ユーザー内部thisキーワードはいくつかの他にどこcreateNew関数を呼び出すしたいし、それが実行されますどのように、同じthisキーワードを渡したい渡しています。私を助けてください。ここで

+1

を説明するために、ボタン要素にIDを追加しました( this [、otherParameter、...]) – Silvinus

+1

'this'はDOM要素を参照するので、DOM要素への参照を渡すだけです:' createNew(someElement、0,0,1); '。 –

+0

このキーワードは、onclickイベントと同じプロパティを与える必要があります。 – subhra

答えて

1

をonclick属性this内部:彼らはただDOM要素への参照を取得し、それを渡す必要があります。あなたは同じ動作を実現したいのであれば、あなたは単にDOM要素を取得して解析することができ、自分自身:

var button = document.querySelector('#optional_0_0_ans button'); 
createNew(button, 0, 0, 3); 
+0

ここにこのキーワードはボタンオブジェクトnoy入力フィールドを保持します。 – subhra

+0

はい、あなたの例でもそうです(この例ではonclick属性はボタン上にあります)。しかし、セレクタと属性を変更することで、これを簡単に変更できます。 – Moritz

1

ものと想定ユーザーは、いくつかの他にどこcreateNew関数を呼び出すしたいし、それが実行されますどのように、同じthisキーワードを渡したいです。 thisだけ内のイベントハンドラが存在するので、可能ではありません

。 「同じthis」は、ハンドラの外部には存在しません。
あなたは、同じか類似した値を渡したいと思っていると思います。では、thisの値は何ですか?これはDOM要素です。現在のDOM要素を指し

var someElement = // get reference to a DOM element 
createNew(someElement,0,0,1); 
0

あなたは、コードの下に使用してそれを行うことができます。

$(".btn-success").on("click", function(){ 
    someFunction(this, param1, param2,...) 
}) 

「.btn成功」クリックしてJavaScript関数を呼び出すボタンに割り当てられたクラスです。セレクタでidを使用することもできます。

1

はいすることができます、あなたの要素にIDを追加するには、取り扱いが簡単になります...

私はあなたがcreateNew.callを行うことができます

<button type="button" class="btn btn-sm btn-success" id="btn" style="line-height:12px;" onclick="createNew(this,0,0,1);"><i class="fa fa-plus" aria-hidden="true"></i></button> 

<script> 
function createNew(evt,index,childindex,hidevalue){  
    alert(evt.type); //alert button when click 
} 
createNew(document.getElementById('btn'),4,5,4); //alert button when run 
</script> 
関連する問題