2 votes

Pourquoi la balise onclick=methodname ne donne-t-elle pas de résultat alors que la balise onclick=operation donne un résultat ?

Dans le code ci-dessous, si je change la couleur d'arrière-plan du bouton Submit avec onclick="document.getElementById('s').style.background='green'" alors le changement est parfait, mais si je le fais avec un appel de fonction, cela ne fonctionne pas, ce que j'ai essayé pour le bouton Clear. J'ai commenté les fonctions. Si vous avez une solution à ce problème, n'hésitez pas à m'en faire part.

function open() {
    x = document.getElementById('s');
    x.style.background = "green";
}

function close() {
    document.getElementById('c').style.background = "red";
}

<!DOCTYPE html>
<html>
<head>
    <title>Events-code with me</title>
</head>
<body>
    <h1>Changing style</h1>
    <button id="s" onclick="document.getElementById('s').style.background='green'">Submit</button>
    <button id="c" onclick="close()">Clear</button>
</body>
</html>

2voto

Friday Ameh Points 1044

close() est une méthode sur l'objet fenêtre lorsque vous nommez votre fonction close et que vous l'appelez sur click. le moteur du navigateur appelle la fonction Windows close() et non votre méthode de fermeture. Un moyen simple de résoudre ce problème est de renommer votre fonction.

function open() {
    x = document.getElementById('s');
    x.style.background = "green";
}

function closeX() {
    document.getElementById('c').style.background = "red";
}

<!DOCTYPE html>
<html>
<head>
    <title>Events-code with me</title>
</head>
<body>
    <h1>Changing style</h1>
    <button id="s" onclick="document.getElementById('s').style.background='green'">Submit</button>
    <button id="c" onclick="closeX()">Clear</button>
</body>
</html>

1voto

gpl Points 1116

Consultez cet extrait :

<!DOCTYPE html>
<html>
<head>
    <title>Events-code with me</title>
</head>
<body>
    <h1>Changing style</h1>
    <button id="s" onclick="openX();">Submit</button>
    <button id="c" onclick="closeX();">Clear</button>
    <script type="text/javascript">
        function openX() {
            x = document.getElementById('s');
            x.style.background = "green";
        }

        function closeX() {
            document.getElementById('c').style.background = "red";
        }
    </script>
</body>
</html>

En fait, lorsque vous utilisez open(); y close(); il appellera window.open(); y window.close(); . En JavaScript, toutes les variables globales (comme document )et des fonctions (par exemple alert() ) appartient à l'objet fenêtre (comme window.document et window.alert() ).

Pour que ces fonctions fonctionnent, vous devez les renommer, ce que j'ai fait ci-dessus.

0voto

Qamar Azam Points 71

La méthode open() est une méthode par défaut de JS pour ouvrir une nouvelle fenêtre de navigateur ou un nouvel onglet, alors remplacez-la par n'importe quel autre nom de méthode, par exemple

function openModal() {
    x = document.getElementById('s');
    x.style.background = "green";
}
<button id="s" onclick="openModal">Submit</button>

0voto

Tanmay Brv Points 16

J'ai essayé votre code avec un appel de fonction car open() et close() sont des fonctions intégrées dans javascript et n'oubliez pas d'écrire votre code js dans la balise :)

Donner un autre nom de fonction à la place de open et close

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X