J'utilise javascript, jQuery. Je dois passer function par référence dans l'événement onClick.
Voici ce que j'essaye mais ne fonctionne pas.

function onClickHandler() {
    console.log("on click handler");
}

function renderButton(callback) {
    $("#root").append(
        '<div style="text-align:right; padding:10px 10px;">\
            <button onclick="' +
        callback +
        '">Collect Hadiths</button>\
        </div>'
    );
}

renderButton(onClickHandler);

Pouvez-vous s'il vous plaît me faire savoir ce que je fais de mal.

-1
Azeem Haider 17 juin 2020 à 11:46

3 réponses

Meilleure réponse

Vous devez ajouter le gestionnaire onclick après avoir ajouté votre bouton au DOM.

function onClickHandler() {
    console.log("on click handler");
}

function renderButton(callback) {
    $("#root").append(
        '<div style="text-align:right; padding:10px 10px;">\
            <button id="button">Collect Hadiths</button>\
        </div>'
    );
    $("#button").click(callback);
}

renderButton(onClickHandler);
4
sebastian-ruehmann 17 juin 2020 à 08:50

Ajoutez l'événement de clic à l'élément généré en utilisant le code ci-dessous

function onClickHandler() {
    console.log("on click handler");
}

function renderButton(callback) {
    $('<div style="text-align:right; padding:10px 10px;">\
            <button>Collect Hadiths</button>\
        </div>'
    ).appendTo("#root").find('button').click(callback);
}

renderButton(onClickHandler);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="root"></div>
0
Zeb Rawnsley 17 juin 2020 à 08:52

J'utiliserais:

function onClickHandler() {
    console.log("on click handler");
}

function renderButton(callback) {
    // Create the button and add the click event
    const button = $('<button>Collect Hadiths</button>');
    $(button).click(callback);

    // Create the div and append the button to it
    const div = $('<div style="text-align:right; padding:10px 10px;"></div>');
    $(div).append(button);

    // Now add to the root
    $("#root").append(div);
}

renderButton(onClickHandler);
0
Kousha 17 juin 2020 à 08:56