2017-04-15 4 views
0

Warum funktioniert dieser Code in PHP nicht? Ich möchte ein Dialogfeld öffnen, wenn ein Benutzer auf mein Bild mit der ID "1" klickt.Bei onclick-Ereignis wird kein Popup angezeigt

<script> 
echo "<script type='text/javascript'> 

$id1 = document.getElementById('1'); 

$id1.onclick = function() { 
    alert('hello'); 
}; 

</script>"; 
+3

Sie können keine Nummer als ID auf Ihrem Element verwenden. Verwenden Sie etwas wie elem1 oder besser noch etwas beschreibender –

+0

@PatrickHund du hast kein Recht – Dzmtrs

+0

OK, ich bin überrascht, dass Sie nur Ziffern als IDs verwenden können. Ich das ist eine gute Praxis ist eine andere Sache –

Antwort

0

function one() { 
 
\t alert('hello'); 
 
};
<a onClick="one()">Click me!</a>

0
  1. Zu Ihrer Frage an den ersten Kommentar Gegensatz Sie CAN eine Nummer als eindeutige Kennung verwenden: Link

Die ID-Attribut gibt i an Die eindeutige Kennung (ID) des Elements.

Es gibt keine weiteren Einschränkungen hinsichtlich der Form einer ID; in insbesondere IDs von nur Ziffern, beginnt mit einer Ziffer bestehen, Start mit einem Unterstrich, besteht aus nur Interpunktion usw.

ein eindeutigen Kennung des Elements kann für eine Vielzahl von Zwecken verwendet werden, vor allem als eine Möglichkeit zur Verknüpfung mit bestimmten Teilen eines Dokuments mit Fragmente, als eine Möglichkeit, ein Element bei der Skripterstellung, und als ein Weg ein bestimmtes Element aus CSS zu stylen.

Versuch mal id="1" ein input Element mit der Eigenschaft zu setzen und es dann mit document.getElementById Funktion zugreifen. Es klappt.

Aber was ich stimme ist, dass solche identifizieren sind ziemlich schwer zu lesen, zu verstehen und sogar daran zu erinnern ... Nur "1" sagt nichts über das Element. Ich würde nicht empfehlen, einen solchen Ansatz zu verwenden. Ja, es wäre besser, mehr "aussagekräftige" Namen wie "button-for-test" oder "smth" zu verwenden.

  1. Der Code zu arbeiten, weil nicht im Zusammenhang mit PHP-Tag Sie $ Zeichen verwendet werden, die auf eine Variable ... PHP-Variable beziehen. Die Zeile $id1 = document.getElementById('1'); wird also als = document.getElementById('1'); interpretiert und verursacht einen Syntaxfehler für JS. Es wird zuerst als PHP-Variable ausgewertet, und da es nicht definiert ist, gibt es nichts, was zu echo ist, also das js-Skript, das Sie der Seite hinzufügen möchten, ist nicht abgeschlossen.

Der Quellcode von diesem Teil der Seite sieht wie folgt aus:

<script type="text/javascript"> 
= document.getElementById('1'); 
.onclick = function() { 
        alert('hello'); 
       }; 
</script> 

Sie sehen, dass keine Variable selbst

gibt es

Statt dessen versuchen, die folgenden kombinierten Code:

<?php 
/* 
    If you declare a php variable, the value you assign to it becomes a JS 
    variable name and is echoed then in the script 
*/ 
$id1 = "test"; 
echo "<script type='text/javascript'> 
$id1 = document.getElementById('1'); 
$id1.onclick = function() { 
       alert('hello'); 
      }; 
</script>" 

?> 

Danach sehen Sie, wenn Sie den Quellcode der Seite betrachten, dass die Variablendeklaration jetzt korrekt ist:

<script type="text/javascript"> 
// Var name has appeared! 
test = document.getElementById('1'); 
test.onclick = function() { 
        alert('hello'); 
       }; 
</script> 

Wenn Sie keine anderen Fehler im Code vorgenommen haben, auf die Schaltfläche klicken sollten Alarm Popup verursachen.

  1. Ich würde empfehlen, declare vars wie folgt:

    var varName = Wert;

Andernfalls wird die Variable automatisch global. Die Art, wie Sie wählen, hängt von Ihren Zielen ab und der Programmarchitektur

+0

Vielen Dank @Dzmtrs. Entschuldigung für den dummen Fehler. Ich bin neu. Ich weiß, es ist keine gute Idee, IDs als numerische Werte zu setzen, aber dahinter steckt ein Zweck. Wie auch immer, nochmals vielen Dank ^.^ – wished

+0

@wished were welcome. Sie können meine Antwort abstimmen, wenn Sie möchten. Ich möchte betonen, dass die Verwendung von "1" als ID nicht die Ursache dafür ist, dass Ihr Code nicht funktioniert – Dzmtrs

+0

Sie haben Recht! Ich habe versucht, dich zu wählen, aber ich habe nicht mindestens 15 Reputationspunkte. Gerade angemeldet vor 2 Tagen LOL :) – wished

Verwandte Themen