2016-06-29 7 views
1

Ich brauche eine Hilfe. Ich übergebe this Schlüsselwort innerhalb der onclick Funktion. wenn der Benutzer die gleiche Funktion aufrufen muss, ohne das onclick-Ereignis zu verwenden, wie es mit Javascript aufgerufen wird. Ich erläutere das Szenario unten.Wie dieses Schlüsselwort außerhalb onclick Funktion in Javascript übergeben

<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> 

Auf dem obigen Code, den ich das Bestehen der this Schlüsselwort in der Onclick event.Here suppose Benutzer möchte einige der createNew Funktion aufzurufen, wo sonst und will die gleichen this Schlüsselwort dann passieren, wie es gemacht wird. Bitte hilf mir.

+1

zu veranschaulichen Sie createNew.call tun können (this [, otherParameter, ...]) – Silvinus

+1

'this' bezieht sich auf das DOM-Element, also würden sie einfach einen Verweis auf ein DOM-Element übergeben:' createNew (someElement, 0,0,1); '. –

+0

Das This-Schlüsselwort sollte die gleichen Eigenschaften wie das Onclick-Ereignis geben. – subhra

Antwort

1

Im Inneren des Onclick-Attribut this bezieht sich auf den aktuellen DOM-Element. Also, wenn Sie das gleiche Verhalten erzielen möchten, können Sie einfach erhalten und analysieren, um die DOM-Element selbst:

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

Hier hält dieses Schlüsselwort das Knopfobjekt noy Eingabefeld. – subhra

+0

ja, weil dies auch in Ihrem Beispiel der Fall ist (im Beispiel ist das onclick-Attribut auf der Schaltfläche). Sie können dies jedoch leicht ändern, indem Sie den Selektor und das Attribut ändern. – Moritz

1

Hier suppose Benutzer möchte einige der createNew Funktion aufzurufen, wo sonst und will die gleichen this Schlüsselwort dann passieren, wie es gemacht wird.

das nicht möglich ist, da this nur innerhalb die Event-Handler vorhanden ist. Das "selbe this" existiert nicht außerhalb des Handlers.
Ich denke, was du meinst ist, dass sie den gleichen oder einen ähnlichen Wert weitergeben wollen. Was ist der Wert von this? Es ist ein DOM-Element. Sie müssen nur einen Verweis auf ein DOM-Element zu erhalten und dass passieren:

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

Sie können es unter Code verwendet:

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

Wo „.btn-Erfolg“ ist eine Klasse, die der Schaltfläche zugewiesen ist, auf der Sie eine JavaScript-Funktion aufrufen möchten. Sie können ID auch im Selektor verwenden.

1

Ja, Sie können, fügen ID Ihr Element ist einfacher zu handhaben ...

I id zu Ihrem Button-Element hinzugefügt

<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> 
Verwandte Themen