javascript для создания кнопки с onclick

Я пытаюсь использовать javascript для создания кнопки с событием onclick, которое вызывает функцию, определенную в голове, которая принимает в качестве параметра объект dom относительно кнопки. Как мне это сделать?

ex:

<html>
<head> <script>function blah(obj){alert(obj.value)}</script></head>
<body>
<button onclick="blah(this.parentNode.value);"></button>
</body>
</html>

JavaScript:

var newButton = document.createElement("button");
???

в конце концов, я хочу, чтобы новая кнопка была такой же, как и существующая.


person WindowsMaker    schedule 28.12.2011    source источник
comment
не могли бы вы объяснить, почему вы это делаете, возможно, существует лучшее решение для того, что вы делаете.   -  person AlanFoster    schedule 28.12.2011
comment
это немного (излишне) сложно, но я попробую. поэтому исходная кнопка создаст кучу вещей и удалит себя. Среди созданных вещей есть еще одна кнопка, которая воссоздает исходную кнопку, которая может создать еще кучу вещей и так далее.   -  person WindowsMaker    schedule 28.12.2011


Ответы (2)


function createButton(context, func) {
    var button = document.createElement("input");
    button.type = "button";
    button.value = "im a button";
    button.onclick = func;
    context.appendChild(button);
}

window.onload = function() {
    createButton(document.body, function() {
        highlight(this.parentNode.childNodes[1]);
        // Example of different context, copied function etc
        // createButton(this.parentNode, this.onclick);
    });
};

Это то, что вы хотите?

person AlanFoster    schedule 28.12.2011
comment
я не думаю, что это решает проблему DOM, когда переданный аргумент относится к кнопке :( - person WindowsMaker; 28.12.2011
comment
@zaftcoAgeiha Я понятия не имею, что это значит. Не могли бы вы объяснить, что вы хотите, пожалуйста. Изменить :: Проверьте сообщение еще раз. - person AlanFoster; 28.12.2011
comment
хорошо, мне нужно иметь возможность динамически создавать эту ‹кнопку onClick=highlight(this.parentNode.childNodes[1])›highlight‹/button› и сделать ее доступной - person WindowsMaker; 28.12.2011
comment
я получаю сообщение об ошибке Uncaught TypeError: Cannot read property '1' of undefined. я думаю, проблема в том, что javascript думает, что это относится к объекту js, а не к html dom obj - person WindowsMaker; 28.12.2011
comment
@zaftcoAgeiha Возможно, это потому, что я набрал «childNotes» вместо «childNodes»… Код работает. - person AlanFoster; 28.12.2011

Вы также можете использовать встроенную функцию javascript setAttrbute.

var newButton = document.createElement("button")
newButton.setAttribute("onclick", "blah(this.parentNode.value)")

Надеюсь, это поможет

person EZECKIEL TOSSEDE NOUDEGBESSI    schedule 04.07.2020