2016-06-04 1 views
0

ich ein Inline auf Click-Ereignis haben, die wie folgt aussieht:Wie kommt man Parameter von einem Inline-Onclick-Ereignis mit Javascript, um sie in einem JS-Datei zu verwenden

<a href="#" class="nextStep" onclick="formHandler.changeStep(2, 'nameYourReport'); return false;"> 

Diese ONCLICK gleiten grundsätzlich die Form der nächste Schritt, der super funktioniert. Mein Problem ist, ich möchte auch das Formular schieben, wenn der Benutzer auf die Enter-Taste klickt und ich Probleme habe, die richtigen Parameter für meine ChangeStep-Funktion innerhalb meiner tatsächlichen JS-Komponente Datei, da sie normalerweise auf hardcoded Werte in der tatsächlichen HTML gezogen werden .

Also meine Frage ist, gibt es eine Möglichkeit, ich kann nur die genaue Funktion ausführen und ausführen und Keydown aus einer externen js-Datei eingeben.

Meine Idee wäre, das Fieldset (Eltern) mit der aktiven Klasse zu greifen. Dann nimm das a-Tag mit der Klasse 'nextStep'. Führen Sie dann die diesem Element zugeordnete Funktion aus.

So habe ich die Funktion aus dem HTML bekommen und haben jetzt als varible dabei ist:

var parent = document.querySelectorAll('.fieldsetParent.active')[0], 
    clickable = parent.getElementsByClassName("nextStep")[0], 
    changeStep = clickable.getAttribute('onClick') 
     .replace('formHandler.', '') 
     .replace(' return false;', ''); 

Aber wenn ich die Variable aufrufen, die die Funktion und theoretisch die Funktion ausgeführt werden soll ausgegeben, um es gleich, Es läuft nicht.

+0

Wie erwarten Sie, dass jemand es weiß, wenn Sie den Code nicht anzeigen: 'changeStep()', oder der Rest der Seite, der Code, von dem die Parameter stammen usw.? – zer00ne

Antwort

1

Sie sollten addEventListener in JavaScript statt von Inline onclick in HTML verwenden. Beispiel:

clickable.addEventListener('click', function() { 
    event.preventDefault() 
    formHandler.changeStep(2, 'nameYourReport') 
}) 

Auf diese Weise können Sie formHandler.changeStep() an anderer Stelle anrufen, wenn Sie benötigen.

document.addEventListener('keypress', function (ev) { 
    if (ev.key === "Enter") { 
    event.preventDefault() 
    formHandler.changeStep(2, 'nameYourReport') 
    } 
}) 

Sie können nicht einfach die Funktion aus dem HTML ziehen, da die Attribute Strings sind nicht Live-Code.

+0

danke für die Eingabe. 9 mal von 10 werde ich addEventListeners verwenden. Aber dieses eine Mal probiere ich inline onClicks aus, nur weil es nett wäre, das Attribut wo immer ich will in das HTML zu übernehmen. Außerdem werde ich anfangen React zu verwenden, also ist das ein bisschen mehr wie es reagieren würde ..... Aber ja, ich würde sagen, dass addEvertListeners etwas netter wäre – Brady

Verwandte Themen