power-poler
Goto Top

Onclick startet Funktion nicht

Guten Tag,

(Hoffe bin hier in der richtigen Kategorie)

Habe da ein kleines Problem bei meinem Projekt.
Und zwar würde ich gerne ein <p> Element mit einem onclick belegen, und dieses Event soll dann eine Funktion aufrufen, die wiederum ein shell_exec ausführt (hierfür habe ich leider auch noch keine Idee).
Wenn ich das onclick mit einem alert belege
<p id="Test" onclick = "alert('Test')>Test</p>  
geht alles wie es soll.
Wenn ich aber meine Funktion aufrufen will, passiert nichts.
Leider kann ich mir diesen Bereich der Seite auch nicht im Quellcode der Seite anzeigen lassen (oder ich weiß nicht wie) da es sie dabei um einen dynamischen Bereich handelt, der beim laden über ein onload erzeugt wird, und später sich ständig verändern soll, ohne jedes mal die Seite neu laden zu müssen.
...
for ($j = 0; $j<$i; $j++) {
	if($j==0){

	echo '<p id= "lol" onclick = "myFunction()">'.'[0'.$j.'] -- '.$a[$j].'</p>';  
	continue;
}
...
?>
<script>
function myFunction() {

		 document.getElementById("lol").innerHTML = "Test"  

}
</script>
habe derzeit eine Textersetzung darin, um zu Testen ob es überhaupt etwas tut.
Wie gesagt, mit alert geht es, ein Funktionsaufruf (eigene Funktion) geht nicht, und später soll da auch ein shell_exec hinein.

Hoffe ihr könnt mir da helfen, wo mein Denkfehler liegt.
Schon mal danke.
Mfg
Power-Poler

Content-Key: 272191

Url: https://administrator.de/contentid/272191

Ausgedruckt am: 29.03.2024 um 01:03 Uhr

Mitglied: 114757
114757 17.05.2015 aktualisiert um 16:50:42 Uhr
Goto Top
<p id="Test" onclick = "alert('Test')">Test</p>
1. hier fehlt ein abschließendes Anführungszeichen " um das Javascript !

document.getElementById("lol").innerHTML = "Test" ;
2. und hier fehlt das abschließende Semikolon der Zeile.

JavaScript benötigt exaktes Programmieren !


Zu deinem Shell_exec, da kannst du mit Ajax arbeiten ... Gibt's hier einige Beispiele im Forum, einfach mal die Suchfunktion anwerfen.
Oder du machst eine PHP-Seite mit den Befehlen und übermittelst dann die Befehle an die URL via GET-Parameter, und hinterlegst einfach die URL auf deine Links.

Gruß jodel32
Mitglied: Power-Poler
Power-Poler 17.05.2015 um 16:58:36 Uhr
Goto Top
<?php
.
.
.
for ($j = 0; $j<$i; $j++) {
	if($j==0){

	echo '<p id= "lol" onclick = "myFunction()">'.'[0'.$j.'] -- '.$a[$j].'</p>';  
	continue;
}
.
.
.
?>
<script>
function myFunction(){
		 document.getElementById("lol").innerHTML = "Test";  
}
</script>

Wird immer noch nicht ausgeführt.
Aber danke.
Mitglied: 114757
Lösung 114757 17.05.2015 aktualisiert um 17:20:10 Uhr
Goto Top
Wozu gibt's die Browser Developer-Tools (F12) und den Debugger wohl ?! Da werden dir eventuelle Fehler angezeigt ... und checke den generierten Source-Code im Browser penibelst. Klappt hier übrigens einwandfrei...Kann sich also nur um einen Flüchtigkeitsfehler bei dir handeln !
Mitglied: Power-Poler
Power-Poler 17.05.2015 aktualisiert um 17:21:29 Uhr
Goto Top
Habe schon versucht, mir den Quelltext im Browser anzeigen zu lassen. (diese Zeilen werden nicht angezeigt)
Einziegster Fehler: habe vergessen die Zeichencodierung anzugeben, welches der Browser aber einfach mal ignoriert.
index.php:
.
.
.
	<script>
function myFunction() {
var xmlhttp = new XMLHttpRequest();
         xmlhttp.onreadystatechange = function() {
             if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    document.getElementById("demo").innerHTML = xmlhttp.responseText;  
	}
	}
	         xmlhttp.open("GET", "playlist.php?q=", true);  
         xmlhttp.send();
}
</script>
<body onload="myFunction()">  
.
.
.
<p id="demo" ></p>  
.
.
.

mehr zeigt mir der Browser an der Stelle nicht an.
demo wird dan ersetzt mit dem Inhalt den playlist.php generiert.
in playlist steht dan der von mir bereits gepostete Quellcode.


Hab meinen Denkfehler gefunden, durch das einsetzen auf die Seite muss ich meinen script auch in die Index einfügen....
Habe ihn jetzt einfach von playlist.php in die index.php geschoben, und schon gehts...

Vielen Dank, durch das Rum klicken im Developer-Tool habe ich dann schlussendlich den generierten Code angezeigt bekommen, und dadurch den Fehler gefunden.
Mitglied: 114757
114757 17.05.2015 aktualisiert um 17:21:14 Uhr
Goto Top
Öhm du definierst zwei Funktionen mit dem selben Namen: myFunction() ...das würde den Fehler erklären, weil nur die zuerst definierte Funktion mit diesem Namen gilt und so die Seite immer wieder nur die Ajax-Funktion aufruft face-wink
Mitglied: Power-Poler
Power-Poler 17.05.2015 aktualisiert um 17:23:16 Uhr
Goto Top
War auch nur zu Testzwecken (Verzweiflung irgendwann)
habe sie jetzt selbstverständlich anders genannt :D
(Edit im Post darüber.)