0
votes

En cliquant sur DIV ne change pas la largeur et la hauteur

J'ai fait un clic de div. Après avoir cliqué sur la div ( quelque_id1 code>, quelques entrez le code ici code> _ID2), vous devez modifier la valeur sur chaque div ( largeur code>, Hauteur code>, Couleur d'arrière-plan code>). La couleur de fond fonctionne normalement, mais la largeur et la hauteur ne fonctionnent pas. Je ne peux pas savoir où j'ai commis une erreur.

p>

<select id="divwidth" onchange="ChengeWidth()">
     <option value="100px">100px</option>
</select>

<input type="color" id="divbackgroundcolor" onchange="ColorChange()">

<div class="some_style" id="some_id1"></div>
<div class="some_style" id="some_id2"></div>


6 commentaires

Avez-vous essayé d'utiliser l'outil de débogage de votre navigateur?


Peut-être onclick plutôt que Onchange (vous devez réellement ajouter des gestionnaires d'événements dans JavaScript, plutôt que via des attributs en ligne HTML5 pour préserver la séparation du contenu)


Étant donné que votre menu n'a qu'une option, vous ne pouvez jamais modifier la valeur, donc Onchange ne fonctionne jamais.


Vous enregistrez également une valeur cliquée, vous n'avez pas besoin d'utiliser si () chèques, il suffit d'exécuter Var W = Document.getElementyID ("divwidth"). Valeur; document.getElementyid (clickeddivid) .style.width = w;


Je veux donner un petit conseil car je vois beaucoup cela sur le débordement de la pile: rendre votre problème aussi petit que possible. Dans ce cas particulier: la méthode fonctionne-t-elle si vous l'appelez directement (Code HardCode A ClickedDivid). Si oui, passez à l'étape suivante: un changement d'option> fonctionne-t-il (donc .. Ajoutez plus d'options à tester) et ainsi de suite. Cela permet de développer beaucoup plus facile car vous pouvez vous concentrer sur une seule tâche.


Dans votre sélection, vous n'avez qu'une seule option, votre ONCHANGE ne fonctionne jamais car il n'y a pas d'autre option de choisir et de déclencher l'onduleur.


3 Réponses :


0
votes

Le menu ne dispose que d'une option, vous ne pouvez donc pas modifier la valeur et le OnCHange code> événement ne déclenche jamais. Si vous lui donnez plusieurs options, le code fonctionne.

p>

<select id="divwidth" onchange="ChengeWidth()">
  <option value="50px">50px</option>
  <option value="100px">100px</option>
  <option value="150px">150px</option>
  <option value="200px">200px</option>
</select>

<input type="color" id="divbackgroundcolor" onchange="ColorChange()">

<div class="some_style" id="some_id1"></div>
<div class="some_style" id="some_id2"></div>


0 commentaires

0
votes

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">

</head>
<body>
<select id="divwidth" onchange="ChengeWidth()">
     <option value="100px">100px</option>
      <option value="200px">200px</option>
       <option value="300px">300px</option>
       <option value="50px">50px</option>
</select>

<input type="color" id="divbackgroundcolor" onchange="ColorChange()">

<div class="some_style" id="some_id1"></div>
<div class="some_style" id="some_id2"></div>
</body>

</html>


1 commentaires

L'erreur était que vous n'avez qu'une seule option dans la liste déroulante.



0
votes

html fort> xxx pré>

CSS fort> p> xxx pré>

JavaScript P>

let current;

function changeColor() {
  const color = document.getElementById("divbackgroundcolor").value;
  current.style.backgroundColor = color;
}

function changeWidth() {
  const width = document.getElementById("divwidth").value;
  current.style.width = width;
}

function initialize() {
    const clickable = document.querySelectorAll('.clickable');

    clickable.forEach((item) => {
    item.onClick = () => {
      current = this;
      changeColor();
      changeWidth();
    }
  });
}

initialize();
  • Ajouter des gestionnaires d'événements aux éléments (je l'ai changé en classe, plutôt que de l'appliquer à tous les
    code> -éléments). Utilisez console.log code> pour vous assurer que tout fonctionne comme prévu. Li>
  • changer la couleur; Appelez-le d'abord immédiatement sans la manipulation des clic entre les deux. Est-ce que ça marche? Probablement pas parce que je n'incluait pas #divwidth code> dans mon exemple, mais j'espère que vous voyez l'approche que je vis. Li>
  • Next Modifier la largeur; Idem que précédent: je n'ai pas inclus #divbackgroundColor code> afin que cela ne fonctionne pas encore li>
  • lie enfin tout ensemble et appelez les méthodes dans le gestionnaire de clic li> ul>

    Espérons que je vous ai pointé dans la bonne direction; bonne chance! p> p>


0 commentaires