0
votes

Impossible d'obtenir si la déclaration s'exécute à l'intérieur d'une fonction OnClick

J'ai cette fonction qui accélère un groupe d'éléments à l'intérieur d'une liste ordonnée lorsqu'un bouton est cliqué, tous les éléments d'un groupe engendré ont le même identifiant / horodatage. La fonction fonctionne bien jusqu'à une instruction "si" où je valide / créer / pousser un tableau d'identifiants. Je ne comprends pas pourquoi il ne sera pas exécuté.

Ceci est ma fonction JS, désolé de la longueur: p> xxx pré>

si je place une alerte juste précédant la déclaration si elle exécute, si je le place après le si Déclaration Il n'exécute pas, étrange. p>

Ceci est mon HTML: P>

    Uncaught ReferenceError: string is not defined
    at spawnSilly (post_creation.php:162)
    at HTMLButtonElement.onclick (VM786 post_creation.php:197)
spawnSilly @ post_creation.php:162
onclick @ VM786 post_creation.php:197


6 commentaires

Il serait utile de voir où idiarray est initialisé (et que est initialisé). Il est possible qu'il soit initialisé à quelque chose d'autre qu'un tableau et c'est donc ! == indéfini et une erreur est lancée lors de la tentative de Push () sur le tableau.


Idarray est initialisé par le premier accumulateur d'un groupe d'éléments, via la première itération de la déclaration IF. Il devrait donc être indéfini si aucun groupe n'a été engendré, mais aucune de la déclaration si elle n'est exécutée. J'ai également essayé d'initialiser l'Idarray comme un tableau juste précédant la déclaration de si, et cela ne semble pas fonctionner :(


Corrigez votre initialisation IDARRAY VAR IDARRAY = Nouveau tableau ()


il initialise sur le premier spawn, l'initialisation de chaque ponte vaincre le but


@akemedis définit ensuite votre idarray en dehors de la fonction.


Juste essayé, ne fonctionne pas non plus malheureusement, aucune des alertes ne sont jetées, si déroutantes


3 Réponses :


1
votes

Vous vérifiez votre condition si indéfinie d'une mauvaise manière. Vous devez modifier les lignes suivantes.

de p> xxx pré>

à p> xxx pré>

de p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#" onclick="alert(getCount(document.getElementById('spawnList'), false));">Count Spawn</a><br/>
<form action="spawn-title-processing.php" method="post">
  <ol id="spawnList">


  </ol>
  <button type="button" id="spawnbtn" onClick="spawnSilly();">Add </button>
  <button type="button" name="spawnSubmit" onClick="submit_chpt">Save</button>
</form>


4 commentaires

L'erreur que vous avez ajoutée en question dans une autre fonction getcount () que vous n'avez pas ajouté dans votre questionnaire


Mise à jour, l'erreur indique la commande bouton.innerhtml, toutefois, lorsque je supprime cette commande, elle jette toujours l'erreur de la ligne 103, à savoir. une ligne vide parce que j'ai supprimé le bouton.innerhtml, très confus


Je veux que le mien de travailler comme ça si mal, j'ai mis à jour ma question, elle jette à nouveau l'erreur de chaîne, je peux supprimer la moitié de la fonction et vomira toujours une erreur de chaîne aléatoire sur des lignes apparemment aléatoires, j'ai supprimé la moitié de la fonctionner comme un test, et il a lancé une erreur de chaîne sur une ligne vide en dehors de la fonction, je n'ai aucune idée de ce qui se passe


J'ai copié votre code et cela a fonctionné, confus, mais je suis heureux d'y aller, merci de l'aide :)



0
votes

Votre IDARRAY code> dans l'instruction IF n'est pas défini, ce qui doit entraîner une erreur et celle où le programme s'arrête.

Pour aviser, il est préférable de faire nettoyer votre code. p>

Par exemple, P>

//spawn chapters function
function spawnSilly() {
  const timestamp = new Date().getUTCMilliseconds();

  var li = document.createElement("LI"); 
  li.setAttribute("id", timestamp)

  var input = document.createElement("INPUT");
  input.setAttribute("type", "text");
  input.setAttribute("placeholder", "Title");
  input.setAttribute("id", timestamp)

  var button = document.createElement("BUTTON");
  button.setAttribute("type", "button");
  button.setAttribute("onClick", "redirect()");
  button.setAttribute("id", timestamp)
  button.innerHTML = "Edit";

  var del_button = document.createElement("BUTTON")
  del_button.setAttribute("id", timestamp)
  del_button.setAttribute("onClick", "removeElement(this.id)")
  del_button.innerHTML = "Delete Chapter";

  //appending to list
  li.appendChild(input)
  li.appendChild(button)
  li.appendChild(del_button);

  // and so on...
}


1 commentaires

Je l'ai défini à l'intérieur, et en dehors de la fonction en vain non :(



0
votes
window.cn(idArray)

0 commentaires