php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-05-2008, 11:41
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard onClick zuweisen

Hallo,

ich erstelle ein Element so:

Code:
        objImage = document.createElement('img');
        objImage.setAttribute('id','Die ID');
        objImage.setAttribute('src','icons/button.gif');
        objImage.setAttribute('style','border:1px solid #F7F7F7;');
        objImage.onclick = function() { alert('Irgendwas') };

        objDiv.appendChild(objImage);
kann mir mal bitte einer erklären, warum das onClick-Event bei erstellen des Objekten schon ausgeführt, und nicht erst wenn ich dann mal dadrauf klicke?

Danke
Mit Zitat antworten
  #2 (permalink)  
Alt 19-05-2008, 11:48
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Oo? Müsste das onclick event nicht erst erstellt werden nachdem du das element in den DOM baum gehangen hast.

imho
Code:
       objImage = document.createElement('img');
        objImage.setAttribute('id','Die ID');
        objImage.setAttribute('src','icons/button.gif');
        objImage.setAttribute('style','border:1px solid #F7F7F7;');
        objDiv.appendChild(objImage);
z.b.:

        document.getElementById('Die ID').onclick = function() { alert('Irgendwas') }
__________________
Bitte Beachten.
Foren-Regeln
Danke

Geändert von Wyveres (19-05-2008 um 11:50 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 19-05-2008, 12:42
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jo, danke! So hauts hin...nachvollziehen kann ich es zwar nicht unbedingt, aber naja...
Mit Zitat antworten
  #4 (permalink)  
Alt 19-05-2008, 12:56
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

Ganz einfach, Du versuchts das onclick event in ein noch nicht im DOM Baum vorhandenes Element anzuwenden.


laut meinem verständnis kann man onclick erst dann anwenden wenn das Element im DOM vorhanden ist.

über welche methode du das machst is dir überlassen JS hat sich dort nicht so. Nur muss das Element schon vorhanden sein, dass es kreiert ist reicht dort nicht aus.



aber da sich dein Problem ja in luft aufgelöst hat ^^
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #5 (permalink)  
Alt 19-05-2008, 13:50
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja, dann komm ich zum nächsten!

document.getElementById('element').onclick = function() { this.funktion(variable) };

wie kann ich hierbei variablen an die funktion weiterleiten?
ich brauch die instanz this und die variable da drin!

wenn ich

document.getElementById('element').onclick = this.funktion(variable);

mache, hab ich das gleiche Problem wie oben. Wird einfach ausgeführt.
Mit Zitat antworten
  #6 (permalink)  
Alt 19-05-2008, 14:56
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

ähm also erstmal AUTSCH :P

2tens ...

warum benutzt du nicht google ?

3tens
a) ist function ein reserviertes WORT ! nur um das mal Festzuhalten.
Code:
document.getElementById('element').onclick = this.funktion(variable);
ein wunder das er überhaupt was tut. PS fehler Console von FireFox und oder FireBug sollten die beim richtigstellen von JS müll helfen können.

4tens ... und dann such erstmal im web ausführlich.

Code:
document.getElementById('element').onclick = funktion(){
alert(this.innerHTML);
}
ich hab mir mal sagen lassen das sowas gegehen soll


EDIT:

achja bevor ich das vergesse ... this bezieht sich immer auf das Element von dem der event ausgeführt wird.

__________________
Bitte Beachten.
Foren-Regeln
Danke

Geändert von Wyveres (19-05-2008 um 15:05 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 20-05-2008, 08:19
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

zu 2.) Ich benutz immer zu erst Google, denn Google ist mein Freund! Aber er kann mir auch nicht immer helfen, denn formulier mal ein Frage dazu!

zu 4.) Das weiß ich auch. Ich nutz nur die Fehlerkonsole von FF und bekomm ein Fehler, aber eben diesen um den es geht.

So sieht die Zeile aus:
Code:
        document.getElementById('btn_'+arrCommands[i][0]).onclick = function() { alert('btn_'+arrCommands[i][0]); }
arrCommands ist ein Array, was ich für ein dynamisches Ansprechen eines Elementes brauch. Hier mal zum Test, nur ein Alert ausgegeben!

Der Fehler ist arrCommands hat keine Eigenschaften, was daran liegt das es arrCommands in der function() {} nicht gibt. Bloß wie übergebe ich es dahin? Da konnte mir Google bis jetzt auch nicht helfen!
Ich will auch keine globale Variable anlegen, weil das ganze zum Schluß ein Aufruf eines Objektes werden soll.

Und das this auf das Element zeigt weiß ich selber, aber um das geht es hier grad nicht ;O)

Geändert von TriphunEM (20-05-2008 um 08:21 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 20-05-2008, 08:47
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

http://ejohn.org/projects/flexible-javascript-events/

vieleicht hilft dir das weiter wenn nicht zeig mal ein wenig mehr Script Code und erklär mal genauer was du damit eigentlich machen willst.
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #9 (permalink)  
Alt 20-05-2008, 09:04
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Naja, nicht wirklich, dort ist das Problem ja auch immer noch.


Ich will ein WYSIWYG-Editor bauen. Das Problem ist unter dem Kommentar "Buttons definieren".

PHP-Code:
document.getElementById('btn_'+arrCommands[i][0]).onclick = function() {
            
this.doExecCommand(strName+'_iframe',arrCommands[i][0],arrCommands[i][1],arrCommands[i][2]);
        } 
Es soll die Funktion "fbEditor.prototype.doExecCommand = function(elementId,command,param1,param2)" aufgerufen werden, aber wie gesagt ich hab kein Zugriff auf arrCommands!

Also hier mal der Code:
PHP-Code:
// HTML
editor = new fbEditor(
   
'theEdit',
   
'100%',
   
'250px',
   
'<h1>Vordefiniert</h1>'
);

// JAVASCRIPT

var useBrowser;

function 
fbEditor(strNameintWidthintHeightstrValue)
{

    var 
objSelf this;
    var 
arrCommands = new Array();
    var 
intArrIdx = -1;

    
// Kommandos definieren
    
intArrIdx++; arrCommands[intArrIdx] = new Array('bold',false,null,'Fett');
    
intArrIdx++; arrCommands[intArrIdx] = new Array('italic',false,null,'Kursiv');
    
intArrIdx++; arrCommands[intArrIdx] = new Array('underline',false,null,'Unterstrichen');

    
// Browser ermitteln
    
this.getBrowser();

    
// Haupt-Container erstellen
    
document.write('<div id="'+strName+'" ');
    
document.write('style="border:1px solid #E0E0E0; background:#F7F7F7; padding:10px;">');
    
document.write('<div id="'+strName+'_buttons"></div>');
    
document.write('</div>');
    
this.objMainDiv document.getElementById(strName);
    
this.objButtonDiv document.getElementById(strName+'_buttons');

    
// Editor definieren
    
this.objEditor document.createElement('iframe');
    
this.objEditor.setAttribute('id',strName+'_iframe');
    
this.objEditor.setAttribute('width',intWidth);
    
this.objEditor.setAttribute('height',intHeight);
    
this.objEditor.setAttribute('frameborder',0);
    
this.objEditor.setAttribute('style','margin-top:5px; border:1px solid #E0E0E0; background:#fff;');

    
// Editor veröffentlichen
    
this.objMainDiv.appendChild(this.objEditor);

    
// Buttons definieren
    
for (var i=0i<arrCommands.lengthi++)
    {
        
this.objImage document.createElement('img');
        
this.objImage.setAttribute('id','btn_'+arrCommands[i][0]);
        
this.objImage.setAttribute('src','icons/'+arrCommands[i][0]+'.gif');
        
this.objImage.setAttribute('style','border:1px solid #F7F7F7;');
        
this.objImage.setAttribute('alt',arrCommands[i][3]);
        
this.objButtonDiv.appendChild(this.objImage);

        
document.getElementById('btn_'+arrCommands[i][0]).onclick = function() {
            
this.doExecCommand(strName+'_iframe',arrCommands[i][0],arrCommands[i][1],arrCommands[i][2]);
        }
    }

    
// In Design-Mode umschalten
    
setTimeout(function() { objSelf.setDesignMode(strName+'_iframe',strValue); } , 100);
    
document.getElementById(strName+'_iframe').contentWindow.document.close();
    
document.getElementById(strName+'_iframe').contentWindow.focus();

    
// Vordefinierten Text setzen
    
document.getElementById(strName+'_iframe').contentWindow.document.open();
    
document.getElementById(strName+'_iframe').contentWindow.document.write(strValue);
    
document.getElementById(strName+'_iframe').contentWindow.document.close();
    
    
// CSS ausschalten
    
this.doNotCSS(strName+'_iframe');
}

/*
* iFrame in Design-Mode setzen
*/
fbEditor.prototype.setDesignMode = function(elementId,strValue)
{
    
document.getElementById(elementId).contentWindow.document.designMode 'On';
}

/*
* Browser ermitteln
*/
fbEditor.prototype.getBrowser = function()
{
    if (
navigator.appName.indexOf('Netscape') != -1)
        
useBrowser 'Netscape';
    else if (
navigator.appName.indexOf('Microsoft') != -1)
        
useBrowser 'IE';
    else if (
navigator.appName.indexOf('Opera') != -1)
        
useBrowser 'Opera';
}

/*
* Style-Tags ausschalten
*/
fbEditor.prototype.doNotCSS = function(elementId)
{
    
doc document.getElementById(elementId).contentWindow.document;
    if (
useBrowser != 'IE'doc.execCommand('useCSS'falsetrue);
}

/*
* Kommandos ausführen
*/
fbEditor.prototype.doExecCommand = function(elementId,command,param1,param2)
{
    
this.doNotCSS(elementId);
    
objEditor document.getElementById(elementId).contentWindow.document;
    
objEditor.execCommand(command,param1,param2);

Mit Zitat antworten
  #10 (permalink)  
Alt 20-05-2008, 09:18
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

es ist Ziemlich Sinn endleerend innerhalb einer Forschleife ein onclick event zu zu weisen -.-

wirft dir in jedem fall ein Undefind zurück ^^

PHP-Code:
function blah()
{
var 
ArrInt = new Array();
ArrInt[0] = "Hallo 1";
ArrInt[1] = "Hallo 2";
ArrInt[2] = "Hallo 3";
ArrInt[3] = "Hallo 4";  
var 
i=0;   
        
document.getElementById('selfTest').onclick= function()    
        { 
        for(;
i<ArrInt.length;i++)
            {
            
alert(ArrInt[i]);
            }
        }
}
hallo = new blah(); 
geht jedoch Ohne probleme ...
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #11 (permalink)  
Alt 20-05-2008, 09:22
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
document.getElementById('btn_'+arrCommands[i][0]).onclick 
ist dir das im code aufgefallen? hab keine feste ID in dem Moment.

ich will ja ein onclick-event jedem button zu weisen, der grad erstell wird. also brauch ich die schleife auch schon vorher!
Mit Zitat antworten
  #12 (permalink)  
Alt 20-05-2008, 09:39
Wyveres
 Registrierter Benutzer
Links : Onlinestatus : Wyveres ist offline
Registriert seit: Dec 2006
Ort: Rügen
Beiträge: 763
Blog-Einträge: 2
Wyveres ist zur Zeit noch ein unbeschriebenes Blatt
Wyveres eine Nachricht über ICQ schicken
Standard

is mir aufgefallen

und ich hab gerade keine zeit aber vieleicht hilft dir ja das hier beim finden einer lösung

http://www.mediaevent.de/javascript/event_listener.html
__________________
Bitte Beachten.
Foren-Regeln
Danke
Mit Zitat antworten
  #13 (permalink)  
Alt 20-05-2008, 09:42
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

schau dir mal hier den punkt 4 an.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #14 (permalink)  
Alt 20-05-2008, 09:52
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Daher muss man (leider) für jeden einzelnen Hauptmenüpunkt den entsprechenden Event-Handler per Hand erzeugen.
??? und wie soll das dann aussehen? kanns mir grad ne vorstellen?
Mit Zitat antworten
  #15 (permalink)  
Alt 20-05-2008, 09:57
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

siehe den link von Wyveres. so wie du es vorhast, geht es nicht.

peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

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