php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.12.2011, 13:13  
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 23
PHP-Kenntnisse:
Anfänger
Ahatius befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] IE & onclick: Objekt nicht anklickbar

Hallo zusammen

Ich hab mir ein PHP Script gebastelt, welches folgenden Output generiert:
HTML-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 
<head>
	<meta http-equiv="content-type" content="text/html; charset=" />
 
	<title>SAP</title>
    
    <style type="text/css">
    
    </style>
</head>
 
<body>
    <form name="comments" action="scomponents.php" method="post">
        <input type="hidden" name="editComponent" value="0" />
        <input type="hidden" name="editSystem" value="0" />
        <input type="hidden" name="saveComponent" />
        <input type="hidden" name="save" value="0"/>
        <input type="hidden" name="delete" value="0" />
        <input type="hidden" name="deleteComponent" value="0" />
        
        <table border="1px">
            <tr>
                <th>System</th>
                <th>Komponente</th>
                <th>Version</th>
                <th>SP</th>
                <th>Kommentar</th>
                <th>
                    <img alt="Bearbeiten" src="http://www.php.de/images/edit.png" />
                    <img alt="Löschen" src="http://www.php.de/images/delete.png" />
                </th>
            </tr>
            
            <tr>
                <td rowspan="2">Systemname</td>
                <td>Komponente A</td>
                <td>100</td>
                <td>3</td>
                <td>Kommentar blablal</td>
                <td>
                    <img alt="Bearbeiten" src="http://www.php.de/images/edit.png" onclick="document.comments.editComponent.value='Komponente A'; document.comments.editSystem.value='Systemname'; document.comments.submit();" />
                    <img alt="Löschen" src="http://www.php.de/images/delete.png" onclick="document.comments.delete.value='1'; document.comments.deleteComponent.value='Komponente A'; document.comments.submit();" />
                </td>
            </tr>
                        
            <tr>                        
                <td>Komponente B</td>
                <td>200</td>
                <td>20</td>
                <td>Kommentar über Komponente B</td>
                <td>
                    <img alt="Bearbeiten" src="http://www.php.de/images/edit.png" onclick="document.comments.editComponent.value='Komponente B'; document.comments.editSystem.value='Systemname'; document.comments.submit();" />
                    <img alt="Löschen" src="http://www.php.de/images/delete.png" onclick="document.comments.delete.value='1'; document.comments.deleteComponent.value='Komponente B'; document.comments.submit();" />
                </td>
            </tr>
        </table>
    </form>
</body>
</html> 
Eigentlich funktioniert der Ansatz mit onclick. Allerdings nur bei dem Bild, durch welches die Bearbeitung angestossen werden kann. Das Bild fürs löschen, funktioniert nicht, obwohl sie vom Aufbau her genau gleich sind und auch funktionstechnisch nicht verschieden sind. Ich kann ihn garnicht anklicken. Im IE erhalte ich unten als Warnung folgendes:
Code:
Bezeichner erwartet
Ich kann mit der Meldung allerdings nichts anfangen da die Zeilen/Zeichen Position an einer komischen Stelle landet.

Ich habe gelesen dass dies etwas mit dem Doctype zu tun haben könnte, da das Löschen mit dem Chrome funktioniert. Ich konnte allerdings nicht in Erfahrung bringen was für einen Doctype ich benötige.

Danke
Ahatius

Geändert von Ahatius (16.12.2011 um 15:27 Uhr).
Ahatius ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.12.2011, 13:22  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.865
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

- Javascript nicht in den HTML-Baum kleistern
- Javascript in externen Dateien auslagern, vereinfacht aufgrund der "entseuchung" des HTML-Codes schon das Debugging, da du dich nicht erst durch das Markup hangeln musst
- Crossbrowser Kompatibilität erreicht man in aller Regel nur ( schnell und einfach ) mit JavaScript Frameworks ( jQuery, MooTools, Prototype )

Insofern du Zugriff auf den PHP-Code hast und du auch PHP "beherrschend kannst", solltest du vielleicht auch noch mal darüber nachdenken ob es nich sinnvoller wäre unnötiges Javascript einzusparen und methodisch darauf zuzusteuern einfach nur Toggles abzuwarten und zu nutzen..

HTML-Code:
<form target="" method="GET">
<input type="submit" name="deleteItem[category1]" value="löschen!" />
<input type="submit" name="deleteItem[category2]" value="löschen!" />
<input type="submit" name="deleteItem[category3]" value="löschen!" />
</form> 
Eintüten und Testen, beobachten und erkennen was geschieht, schlüsse ziehen und sehen: "Javascript ? Näää wozu denn.."

^^
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 16.12.2011, 13:30  
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 23
PHP-Kenntnisse:
Anfänger
Ahatius befindet sich auf einem aufstrebenden Ast
Standard

Der Grund wieso ich Javascript nahm (ich mag JS eigentlich nicht so), war dass ich Daten über POST Senden wollte, aber den Submit über Links realisieren wollte (POST Daten mit PHP zu erstellen war mir zu kompliziert). Die Zielvorgabe an sich ist bloss dass die Adressezeile "sauber" bleibt, sonst hätte ich das am liebsten mit GET gemacht :\

Leider verstehe ich nicht ganz was du mit Toggles und methodischer Ansteuerung meinst
Ahatius ist offline   Mit Zitat antworten
Alt 16.12.2011, 13:31  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.865
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Probier ma das snippet aus und achte auf die Url..

Lass doch die Buttons der Submits aussehen wir Links, wo is das Problem .. ?

tescht.php
PHP-Code:
<?php

$message 
false;

$deleteItem = isset($_GET['deleteItem']) ?
   
array_shift(array_keys($_GET['deleteItem'])) : false;

if ( 
$deleteItem $message $deleteItem.' wurde gelöscht!';

?><!DOCTYPE html>
<html>
   <head>
      <title>demo päitsch</title>
      <meta charset="utf-8" />
   </head>
   <body>
      <div><?php echo (string)$message?></div>
      <form target="" method="GET">
         <input type="submit" name="deleteItem[Item1]" value="Lösche jetzt Gerät mit Kennung 1" />
         <input type="submit" name="deleteItem[Item2]" value="Lösche jetzt Gerät mit Kennung 2" />
         <input type="submit" name="deleteItem[Item3]" value="Lösche jetzt Gerät mit Kennung 3" />
      </form>
   </body>
</html>
happy testing.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.

Geändert von tr0y (16.12.2011 um 13:45 Uhr). Grund: Beispiel eingefügt.
tr0y ist offline   Mit Zitat antworten
Alt 16.12.2011, 14:07  
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 23
PHP-Kenntnisse:
Anfänger
Ahatius befindet sich auf einem aufstrebenden Ast
Standard

Hab das probiert, allerdings werden die Variablen alle in der URL abgebildet (test.html?deleteItem%5BItem1%5D=L%C3%B6sche+jetzt +Ger%C3%A4t+mit+Kennung+1)
Ahatius ist offline   Mit Zitat antworten
Alt 16.12.2011, 14:10  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

...das ist so, wenn man GET als method angibt. Ansonsten musst Du POST als method nehmen (tr0y hat das auch mehr als "Verständnis-Code" gemeint und nicht als fertige Lösung).

mfg wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 16.12.2011, 14:14  
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 23
PHP-Kenntnisse:
Anfänger
Ahatius befindet sich auf einem aufstrebenden Ast
Standard

Der Unterschied zwischen POST und GET ist mir bekannt (zumindest weiss ich dass GET Parameter über die URL mitgegeben werden, wohingegen die POST Daten im Hintergrund mitgegeben werden).

Wie gesagt, wäre für mich alles mit GET zu machen die einfachste Variante, allerdings wurde aus ästhetischen Gründen verlangt dass die URL sich nicht ändern soll. Aus dem Grund habe ich auch den Ansatz mit Javascript probiert, kenn mich damit allerdings überhaupt nicht aus.

Oder ich pack alles in ein grosses Frame...

Edit: Hätte ich einen Nachteil wenn ich das über Sessions machen würde?

Geändert von Ahatius (16.12.2011 um 14:20 Uhr).
Ahatius ist offline   Mit Zitat antworten
Alt 16.12.2011, 14:22  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Zitat:
Oder ich pack alles in ein grosses Frame...
Warum?? Frames = böse (pauschalisiert); nutze lieber div's

Zitat:
Wie gesagt, wäre für mich alles mit GET zu machen die einfachste Variante, allerdings wurde aus ästhetischen Gründen verlangt dass die URL sich nicht ändern soll. Aus dem Grund habe ich auch den Ansatz mit Javascript probiert, kenn mich damit allerdings überhaupt nicht aus.
Du kannst URL's auch kürzen, wenn Dich das "ästhetisch" nicht anspricht. Wichtig bei GET ist (natürlich genauso wie bei POST Parametern), dass du sätmliche Übergaben prüfst!!

Mit SESSIONS kannst Du das auch machen, aber muss schon Sinn machen. BEschreib bitte genau, was Du möchtest!

tr0y hat nicht ohne Grund das geschrieben, was er geschrieben hat!!!

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 16.12.2011, 14:27  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.865
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Leude..

Die URL auf die Ich hinwies repräsentiert etwas.. Daten, genauer ein HTML-Array, das du in PHP auslesen und behandeln kannst wie in Array... per Superglobals...

Wie genau man das macht hab ich mit dem Stück via Ternary Operator und array-Funktionen gezeigt, wie wolf29 schon treffend sagte: Ich schrieb das was ich schrieb weil ich es schrieb um zu schreiben weil es geschrieben werden musste, da es sonst wohl keiner dir geschrieben hätte, vielleicht gesungen, oder nicht. Sein oder nicht sein,... Oh wait..

*Kaffee holen geh*
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 16.12.2011, 14:29  
Neuer Benutzer
 
Registriert seit: 14.12.2011
Beiträge: 23
PHP-Kenntnisse:
Anfänger
Ahatius befindet sich auf einem aufstrebenden Ast
Standard

Das Script zieht aus der Datenbank Komponenten heraus und überprüft diese mit Hilfe eines statischen Arrays. Sollte die Komponente aus der Datenbank nicht im Array auftauchen, wird die Komponente aufgelistet (samt des Systems auf dem diese Komponente läuft).

Dies dient dem Zweck dass dann die Personen die für diese Systeme zuständig sind eintragen können, wozu diese Komponenten gut sind und weswegen sie benötigt werden.

Der Benutzer soll also die Möglichkeit haben Kommentare zu Komponenten abzugeben. Er kann lediglich den Kommentar bearbeiten, nicht die Komponente selber.

Als Vorgabe wurde gesetzt dass die URL sauber aussehen soll, also sich nicht verändert. Ich hab mich daher informiert wie ich mit PHP POST Daten generieren kann, dies dann aber für zu kompliziert gefunden, und daher den Ansatz mit Javascript probiert. Es klappt ja eigentlich auch, der Link für das Bearbeiten funktioniert einwandfrei. Lediglich der für das Löschen lässt sich nicht anklicken (und auch das nur im IE, im Chrome kann ich den anklicken, und er tut sogar dass was er soll).

Daher war meine eigentliche Frage, wieso der der onclick Event fürs Bearbeiten funktioniert, der fürs Löschen aber nicht, obwohl beide gleich aufgebaut sind und alle referenzierten Objekte im Code enthalten sind. Habs ja daher im Javascript Forum gepostet, und nicht bei PHP
Ahatius ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] PHP Objekt serialisieren PeterXV PHP Einsteiger 14 07.07.2011 20:33
Bestehendes Objekt in einer inkludierten File Nutzen MLang PHP Einsteiger 6 25.02.2011 15:45
Rückgabe von mysql_fetch_object kein Objekt mehr ? Heurazio PHP Einsteiger 8 10.12.2010 13:05
[Erledigt] Gegenteil von onClick() mkn JavaScript, Ajax und mehr 2 29.09.2010 13:44
Objekt in Session-Array ablegen mupilz PHP-Fortgeschrittene 2 30.08.2010 17:25
[Erledigt] Problem beim dynamischen Erweitern von Arrays in Object Porperties dille001 PHP Tipps 2010 3 24.05.2010 11:52
Ergebnis einer Datenbankabfrage als Objekt chunky PHP Tipps 2010 7 27.01.2010 21:38
onClick + overlays aber ohne submit Chili-Schaf JavaScript, Ajax und mehr 2 04.12.2009 12:12
[Erledigt] Objekt Iteration Löschmethode stayInside PHP-Fortgeschrittene 10 29.11.2009 15:07
Objekt löschen via Methodenübergabe desselben nikosch Software-Design 19 01.06.2009 00:38
[Erledigt] Objekt an Konstruktor übergeben hawkeye78 PHP Tipps 2009 7 28.02.2009 19:01
Objekt im GET-Query wird nicht übertragen Ralpho PHP-Fortgeschrittene 10 05.05.2008 10:03
[Erledigt] PHP5 OOP Zugriff aus einem Objekt auf ein externes Objekt PHP Tipps 2006 5 28.01.2006 16:05
Objekt übergeben Fatal Error PHP Tipps 2007 5 28.12.2005 14:43
kann sich ein Objekt selbst serialisieren? ajo_silent PHP Tipps 2005-2 24 27.06.2005 09:13

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bild in php anklickbar machen onclick, anwendung mit onclick lässt sich nicht deinstallieren, ( erwartet im ie onclick, ie div mit onclick nicht klickbar, php onclick internet explorer, jquery objekt nicht anklickbar machen, submit ie nicht klickbar, ie input nicht klickbar, onclick td internet explorer, formular in internet explorer nicht anklickbar, ie8 div klickbar kompatibilitätsmodus, html php objekt, internet explorer 8 input nicht klickbar

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:56 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum