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 11.09.2011, 15:57  
elf
Erfahrener Benutzer
 
Registriert seit: 15.10.2010
Beiträge: 131
PHP-Kenntnisse:
Anfänger
elf befindet sich auf einem aufstrebenden Ast
Standard

Hallo nikosch!

Zitat:
1) „makeRed“ macht eine AUssage über Wirkung, nicht Funktion. markInvalid() o.ä. wäre treffender.
Ja, das ist mir bewusst. Das Beispiel war, wie gesagt, schlecht gewählt. Ich bin ansonstent sehr bemüht semantisch korrekt zu bleiben, bei meinen CSS Klassen, etc.
Unter diesem Gesichtspunkt wäre eine Methode FormElement.activateInput() vielleicht auch aussagekräftiger als FormElement.showInput().

Zitat:
2) Das Verhalten fest einzubauen halte ich für falsch. Die m.E. eleganteste Methode ist immer noch, class-Attribut zuweisen, (z.B. „invalid“) und mit CSS weiterstylen. Zugegeben, wenn zusätzliches HTML benötigt wird, ist das nur begrenzt möglich. Aber dann würde ich überlegen, diese Struktur gleich auszuliefern und bei Nicht-Bedarf auszublenden.
Ja, das versuch ich auch. Allerdings versteh ich nicht, was Du mit 'zusätzlichem HTML' meinst. Meinst du Markup, dass mit JavaScript erstellt wird? Das will ich grundsätzlich vermeiden.

Zitat:
Dann benutze die doch auch zum Selektieren der Elemente, Zuweisen von Styles/Klassen usw. Ist doch sonst verschwendete Performance.
jQuery macht einem das Leben in dieser Hinsicht so leicht, dass ich nicht das Bedürfniss habe zu document.getElementByX() zurückzukehren.

Vielen Dank!
elf ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 11.09.2011, 23:00  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Allerdings versteh ich nicht, was Du mit 'zusätzlichem HTML' meinst. Meinst du Markup, dass mit JavaScript erstellt wird? Das will ich grundsätzlich vermeiden.
Ich meine, dass man bspw. eine Fehlermeldung als Reaktion auf eine Falscheingabe nicht über CSS abbilden kann. Wohl oder übel muss man hier den Pfad der reinen Lehre (Layer) verlassen und logisch schon vorbauen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 11.09.2011, 23:24  
elf
Erfahrener Benutzer
 
Registriert seit: 15.10.2010
Beiträge: 131
PHP-Kenntnisse:
Anfänger
elf befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Ich meine, dass man bspw. eine Fehlermeldung als Reaktion auf eine Falscheingabe nicht über CSS abbilden kann. Wohl oder übel muss man hier den Pfad der reinen Lehre (Layer) verlassen und logisch schon vorbauen.
Ich persönlich habe das so gelöst, dass ich onBlur einen Ajax Request sende und mir nach Belieben das gesamte Element / Sub-Form mit Fehlermeldungen und zusätzlichem Markup zurücksenden lasse. Dann tausche ich die Nodes aus.
Das heißt die Fehlermeldungen kommen vom Server, der ja sowieso die Validierung übernimmt.

Das mag allerdings nicht in jedem Fall funktionieren.
elf ist offline   Mit Zitat antworten
Alt 12.09.2011, 10:59  
Erfahrener Benutzer
 
Registriert seit: 30.07.2008
Beiträge: 1.167
PHP-Kenntnisse:
Fortgeschritten
xm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphärexm22 sorgt für eine eindrucksvolle Atmosphäre
Standard

Zum Thema insgesamt kann ich sagen, dass die Zuweisung von Eigenschaften und Methoden zu DOM-Elementen gar nicht schlecht ist. Ich mache das teilweise bei Applikationen so, wo z. B. DOM-Objekte Datensätze repräsentieren. Die können dann z. B. Informationen bekommen, die man woanders verwenden kann, ohne Umwege über Elemente zu nehmen, die mittels display: none ausgeblendet werden müssen. So kann man z. B. Inhalte, die in einem Tooltipp angezeigt werden sollen, dem jeweiligen Element zuweisen. jQuery stellt dazu direkt einen Warapper .data zur Verfügung, aber meiner Erfahrung nach geht es auch so.
PHP-Code:
jQuery('..selector...').get(0).eigenschaft wert 
Allerdings muss man sich im Klaren sein, dass das dann keine "Tag-Attribute" sind. Dafür ist etwas mehr Aufwand notwendig.
xm22 ist offline   Mit Zitat antworten
Alt 13.09.2011, 14:53  
Erfahrener Benutzer
 
Registriert seit: 28.05.2008
Beiträge: 2.094
PHP-Kenntnisse:
Fortgeschritten
rudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nettrudygotya ist einfach richtig nett
Standard

@ xm22: Dabei riskierst du memleaks, während data sauber aufräumt, den Zugriff cached und den Wert für alle Elemente setzt. Zudem kann dein jQuery Objekt mehr als ein Element beinhalten.

@TE: Für Objekte, die du - auch zur Laufzeit - erweitern willst, kannst du dir mit mixins behelfen, ich bedien mich mal am source von underscore.js (http://documentcloud.github.com/underscore/):

PHP-Code:
  // Add your own custom functions to the Underscore object, ensuring that
  // they're correctly added to the OOP wrapper as well.
  
_.mixin = function(obj) {
    
each(_.functions(obj), function(name){
      
addToWrapper(name_[name] = obj[name]);
    });
  };

_.mixin({
  
capitalize : function(string) {
    return 
string.charAt(0).toUpperCase() + string.substring(1).toLowerCase();
  }
});
_("fabio").capitalize();
//=> "Fabio" 
Allerdings können mixins auch schnell zu undurchsichtigem Code führen, von dem her mit Vorsicht genießen.

Klassische Vererbung mit jQuery:
PHP-Code:
var parent = function () {};
parent.prototype = {
    
foo : function () {
    }
};

var 
child = function () {};
child.prototype =  $.extendtrue, {}, parent.prototype, {
    
childMethod1 : function () {},
    
childMethod2 : function () {}
} ); 
Oder alternativ per Object.create( https://developer.mozilla.org/en/Jav.../Object/create ).

Pseudo-classical inheritance a la MooTools/Prototype, Base.js etc. können dir auch diese Arbeit abnehmen.

Ich seh das auch so, wie es ChrisB schon angerissen hat. jQuery macht es einem sehr leicht, den DOMNode in den Fokus zu rücken, allerdings hat ein Model erstmal nichts mit einem DOMNode zu tun. Eine View/ ein Widget oder wie auch immer du das nennen magst, muss mit dem DOM arbeiten, der Scope des Widgets allerdings sollte die Instanz des Widgets sein und nicht der DOMNode/jQuery selbst.

Grüße


Basti
__________________
++++ Wieder einer ins Netz gegangen: Phishers Fritz zufrieden ++++
Blog

Geändert von rudygotya (13.09.2011 um 18:11 Uhr). Grund: code beispiel korrigiert
rudygotya ist offline   Mit Zitat antworten
Alt 13.09.2011, 15:26  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich finde data auch besser. Schon weil man das auch HTML-seitig vorbelegen kann.

Alternative kapsele ich Funktionalitäten, indem ich DOM-Node und Properties in einem gemeinsamen Objekt wrappe.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch 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
Namensschema für Methoden einer Klasse ("Best Practise") dreamcatcher Software-Design 11 14.06.2011 14:43
Wohin mit methoden BlackScorp Software-Design 9 24.03.2011 16:37
[Erledigt] IF Bildvariable einer Tabelle zuweisen headbannger83 Scriptbörse 8 06.01.2011 14:32
[Erledigt] Objekt mit statischen Methoden hts JavaScript, Ajax und mehr 3 18.12.2010 21:07
[Erledigt] Letzer Datensatz - andere CSS Klasse zuweisen greenslot PHP Tipps 2010 7 10.08.2010 12:06
Objekte verwenden gleiche Methoden Cube PHP Tipps 2010 2 21.04.2010 09:25
[Erledigt] value in radiobutton variable zuweisen FreddyS PHP Tipps 2009 7 01.09.2009 23:22
[Erledigt] Selectfeld in Php einer Klasse zuweisen Mitch26 PHP Tipps 2009 2 01.04.2009 12:24
Kindklasse: Methoden über _call() ergänzen? ciss PHP Tipps 2008 2 29.12.2008 18:08
[Erledigt] Methoden auf Objekt aufrufen (und fangen), die nicht existieren tsisson PHP Tipps 2008 2 07.10.2008 18:19
UML - Abstrakte und vererbte Methoden zwingend anzugeben? MaMo-Net Off-Topic Diskussionen 3 17.03.2008 06:04
Zugriff auf statische methoden oder konstanten nightfreak PHP-Fortgeschrittene 6 14.11.2005 16:56
klassen und methoden anderer klassen in methoden.... PHP Tipps 2005 17 25.05.2005 09:46
Variablen Namen zuweisen dh1sbg PHP Tipps 2004-2 3 12.11.2004 17:12
if abfragen eine Variable zuweisen PHP Tipps 2004 6 10.07.2004 17:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
elemente mit .get() klassen zuweisen, php einer klasse konstante eigenschaften zuweisen, html form 2 methoden zuweisen

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:30 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