+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 15 von 20

Thema: IF . . . /syntax

  1. #1
    clavesana ist offline Jungspund clavesana befindet sich auf einem aufstrebenden Ast
    registriert
    02-02-2009
    Beiträge
    17

    IF . . . /syntax

    Hallo zusammen

    Ich habe ein Problem mit der Abfrage eines Datum (und ein Problem mit meinen JS-Kenntnissen = null). Könnte mir bitte jemand sagen ob die Syntax (nicht die Logik / Schaltjahr und so . . .) der IF-Bedingungen so richtig ist. Konnte leider in den einschlägigen Foren etc. nichts derartiges finden.

    Vielen Dank schon mal im voraus für Hilfe - Gruss clavesana


    if (
    isNaN(datenquelle.substr((pos_end_path+1),8)) || // Check date
    datenquelle.substr((pos_end_path+5),2) < 1 ||
    datenquelle.substr((pos_end_path+5),2) > 12 ||
    datenquelle.substr((pos_end_path+7),2) < 1 ||
    datenquelle.substr((pos_end_path+7),2) > 31
    )
    {alert(datenquelle.substr((pos_end_path+1),8) + " ist keine Titel-Datum zum editieren !");}
    WIN XP prof. SP3

  2.    Empfehlenswerte Literatur von unserem Partner Terrashop

    Das AJAX Kompendium jetzt 84% Rabatt
    Ajax - der Technologiemix aus JavaScript und XML - ist eines der Kernstücke professioneller Web 2.0-Programmierung. Dieses Buch führt Sie auf über 800 Seiten(!) von den ersten JavaScript-Codezeilen bis zur Entwicklung mit Ajax-Frameworks.

    Preis: früher: 49,95€ - jetzt nur: 7,95€

    Hier geht es direkt zum Buch

    Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar!

  3. #2
    Avatar von jeko
    jeko ist offline Foren-Gott jeko befindet sich auf einem aufstrebenden Ast
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.045

    AW: IF . . . /syntax

    Unter der Annahme, dass datenquelle.substr( (pos_end_path+1) , 8) ein aus 8 Zeichen bestehender numerischer String ist (z.B. 12345678 oder 20090202, ein Datum in der Form YYYYMMDD) dann musst du bei den letzten vier Bedingungen die Rückgabe von substr noch als Integer-Wert parsen lassen (parseInt heisst die Funktion). Dann sollten solche Vergleiche funktionieren. Um zu überprüfen, ob du dich an der richtigen Stelle befindest würde ich mir mal die substr-Rückgabewerte mit alert() ausgeben lassen...

    Viel Erfolg!

    grüsse
    jeko
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  4. #3
    Avatar von ein schlauer
    ein schlauer ist offline Lounge-Member ein schlauer befindet sich auf einem aufstrebenden Ast
    registriert
    18-08-2004
    Ort
    Mainz
    Beiträge
    10.883

    AW: IF . . . /syntax

    Zitat Zitat von clavesana Beitrag anzeigen
    Könnte mir bitte jemand sagen ob die Syntax (nicht die Logik / Schaltjahr und so . . .) der IF-Bedingungen so richtig ist. Konnte leider in den einschlägigen Foren etc. nichts derartiges finden.
    warum schaust du in Foren um eine Syntax zu überprüfen? Die Fehlerkonsole zeigt dir sofort an, wenn diese falsch ist.

    [Nachtrag]

    Ach, und um ein Datum zu prüfen bietet sich ein Vergleich mit einem Date Objekt an.
    PHP-Code:
    String.prototype.isDate = function (){
        var 
    string this
        
    .replace(/[-/]/g'.'// Trennzeichen umwandeln in Punkte
        
    .replace(/[^0-9^.^:^ ]/g''// ungültige Zeichen entfernen
        
    .replace(/ +/g' '); // doppelte Leerzeichen entfernen
        
        
    var uhr string.split(" "); // Uhrzeit abtrennen
        
    var split uhr[0].split(".");
        var 
    day parseInt(split[0], 10);
        var 
    month parseInt(split[1] || 010);
        var 
    year parseInt(split[2], 10);

        if(
    isNaN(year)) year = (new Date).getFullYear();

        var 
    check = new Date(yearmonth 1day);
        if(
    uhr[1]) {
             var 
    uhr[1].split(':');
             
    check.setHoursu[0] || );
             
    check.setMinutesu[1] || );
             
    check.setSecondsu[2] || );
        }

        var 
    day2 check.getDate();
        var 
    year2 check.getFullYear();
        var 
    month2 check.getMonth() + 1;

        return ( 
    year2 == year && month == month2 && day == day2 ) ? check
        
    null;
    }

    var 
    date_1 '3.2.2009';
    var 
    date_2 '31.2.2009';
    alert(date_1.isDate());
    alert(date_2.isDate()); 
    Geändert von ein schlauer (03-02-2009 um 09:15 Uhr)

  5. #4
    clavesana ist offline Jungspund clavesana befindet sich auf einem aufstrebenden Ast
    registriert
    02-02-2009
    Beiträge
    17

    AW: IF . . . /syntax

    Salü jeko

    Merci vielmol für Dei Hülf - äs klappet beschtens.

    @ ein schlauer

    Auch Dir besten Dank für Deine Unterstützung. Deine Antwort wirft allerdings für einen dummy wie mich schon wieder Fragen auf.

    - was ist eine Fehlerkonsole ?

    Da ich weder über JS- noch PHP-know-how verfüge, ist Dein Vorschlag etwas schwierig nachvollziehbar für mich. Ich habe für mein tollkühnes Unterfangen, mich in dieser web-Welt zu bewegen nur 2 alte JS-Bücher zur Hand.

    Gruss clavesana
    WIN XP prof. SP3

  6. #5
    Avatar von jeko
    jeko ist offline Foren-Gott jeko befindet sich auf einem aufstrebenden Ast
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.045

    AW: IF . . . /syntax

    Hi clavesana,

    bitte kein Schweizerdeutsch, das versteht man hier nicht Aber freut mi dass gange isch.

    Die Fehlerkonsole befindet sich im Firefox Browser unter "Extras" -> "Fehler-Konsole" (oder mit dem Shortcut Ctrl/Strg+Umschalt/Shift+J).

    Um ein_schlauers Beispiel nachvollziehen zu können solltest du vielleicht SELFHTML: JavaScript / Objektreferenz / Date und Peter Kropff - JavaScript - OOP mit JavaScript - Prototypen lesen.

    grüsse
    jeko
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  7. #6
    clavesana ist offline Jungspund clavesana befindet sich auf einem aufstrebenden Ast
    registriert
    02-02-2009
    Beiträge
    17

    AW: IF . . . /syntax

    Hallo jeko

    Danke für Deine Tips. Gibt es so eine Fehlerkonsole auch im IE ? SELFHTML: JavaScript kannte ich schon, war bis jetzt meine Ueberlebenshilfe . . . Peter Kropff - JavaScript werde ich gleich ansehen.

    Gruss clavesana
    WIN XP prof. SP3

  8. #7
    Avatar von ein schlauer
    ein schlauer ist offline Lounge-Member ein schlauer befindet sich auf einem aufstrebenden Ast
    registriert
    18-08-2004
    Ort
    Mainz
    Beiträge
    10.883

    AW: IF . . . /syntax

    Zitat Zitat von clavesana Beitrag anzeigen
    Da ich weder über JS- noch PHP-know-how verfüge, ist Dein Vorschlag etwas schwierig nachvollziehbar für mich. Ich habe für mein tollkühnes Unterfangen, mich in dieser web-Welt zu bewegen nur 2 alte JS-Bücher zur Hand.
    Naja, das Beispiel ist eine Erweiterung des String Objektes, d.h. wenn du einen string in der Form 'DD.MM.YYYY' hast kannst du mit der Methode isDate() prüfen ob das ein gültiges Datum ist.

    Also so:
    PHP-Code:
    var deinDatum 'xxxxxxxxx';
    if(
    deinDatum.isDate()) {
    // alles OK.

    also ganz einfach.

    Der IE zeigt auch Fehler an, durch ein Ausrufezeichen in der Statusleiste, auf das du dann Doppelklicken musst, die Meldungen sind aber oft nicht besonders aufschlussreich

  9. #8
    clavesana ist offline Jungspund clavesana befindet sich auf einem aufstrebenden Ast
    registriert
    02-02-2009
    Beiträge
    17

    AW: IF . . . /syntax

    Hallo schlauer

    Spät aber trotzden herzlich - besten Dank für die abermalige Hilfestellung. Ich musste mich erst etwas einlesen in die Materie von prototype etc. (habe leider nicht alles begriffen . . . ).

    .replace(/[-/]/g, '.') // Trennzeichen umwandeln in Punkte

    Bei dieser line bekomme ich von CSE HTML-Validator 2 err.-msg. :

    [JavaScript] SyntaxError: unterminated character class -
    [JavaScript] lint warning: unexpected end of line; it is ambiguous whether these lines are part of the same statement


    Was bedeuten bitte diese Zirkumflex und das g ??? Ich habe auf dem web gesucht, konnte aber für die Notation zwischen den Klammern keine Erklärung finden.

    .replace(/[^0-9^.^:^ ]/g, '') // ungültige Zeichen entfernen

    mfG clavesana
    WIN XP prof. SP3

  10. #9
    Avatar von ein schlauer
    ein schlauer ist offline Lounge-Member ein schlauer befindet sich auf einem aufstrebenden Ast
    registriert
    18-08-2004
    Ort
    Mainz
    Beiträge
    10.883

    AW: IF . . . /syntax

    Der Fehler im Validator liegt vermutlich daran, dass du den JS Code im HTML Code eingebettet hast und je nach DOCTYPE musst du diesen dann in einem CDATA Block einpacken. Einfacher ist es den JS Code auszulagern.

    Das Hütchen, heißt: nicht. Also alles was nicht eine Zahl oder ein Punkt oder ein Doppelpunkt ist, wird entfernt. Das g, heißt global, also die komplette Zeichenkette wird durchsucht.

  11. #10
    Avatar von kkapsner
    kkapsner ist offline Moderator kkapsner befindet sich auf einem aufstrebenden Ast
    registriert
    28-03-2008
    Beiträge
    5.531

    AW: IF . . . /syntax

    Soweit ich weiß bräuchte man gar nicht so viele "Hütchen" (Circonflex):
    Code:
    replace(/[^0-9.: ]/g, '')
    Ich mach' das jedenfalls immer so - und hat bis jetzt funktioniert.

  12. #11
    Avatar von ein schlauer
    ein schlauer ist offline Lounge-Member ein schlauer befindet sich auf einem aufstrebenden Ast
    registriert
    18-08-2004
    Ort
    Mainz
    Beiträge
    10.883

    AW: IF . . . /syntax

    Das Skript ist älter, du hast Recht (im Orginal hatte ich auch noch Backslashes drin, die durch das Forum ausgefiltert wurden.
    Also nochmal:
    PHP-Code:
    String.prototype.isDate = function (){
        var 
    string this
        
    .replace(/[-/]/g'.'// Trennzeichen umwandeln in Punkte
        
    .replace(/[^0-9.: ]/g''// ungültige Zeichen entfernen
        
    .replace(/ +/g' '); // doppelte Leerzeichen entfernen
        
        
    var uhr string.split(" "); // Uhrzeit abtrennen
        
    var split uhr[0].split(".");
        var 
    day parseInt(split[0], 10);
        var 
    month parseInt(split[1] || 010);
        var 
    year parseInt(split[2], 10);

        if(
    isNaN(year)) year = (new Date).getFullYear();

        var 
    check = new Date(yearmonth 1day);
        if(
    uhr[1]) {
             var 
    uhr[1].split(':');
             
    check.setHoursu[0] || );
             
    check.setMinutesu[1] || );
             
    check.setSecondsu[2] || );
        }

        var 
    day2 check.getDate();
        var 
    year2 check.getFullYear();
        var 
    month2 check.getMonth() + 1;

        return ( 
    year2 == year && month == month2 && day == day2 ) ? check
        
    null;


  13. #12
    Avatar von kkapsner
    kkapsner ist offline Moderator kkapsner befindet sich auf einem aufstrebenden Ast
    registriert
    28-03-2008
    Beiträge
    5.531

    AW: IF . . . /syntax

    Nettes Script, aber warum testest du nicht auch die Uhrzeit darauf, dass sie stimmt?
    So würde z.B: "1.1.2009 15:90:100" als valides Datum durchgehen.

  14. #13
    clavesana ist offline Jungspund clavesana befindet sich auf einem aufstrebenden Ast
    registriert
    02-02-2009
    Beiträge
    17

    AW: IF . . . /syntax

    Hallo zusammen

    Danke für Eure Hilfe - leider klemmt es immer noch (nicht nur in meinem Hirn) . . .

    Um die err.-msg. aus dem Validator zu eliminieren habe ich, leider erfolglos, die mir bekannten Varianten probiert:

    - JS im head
    - JS im body
    - JS ausgelagert
    - CDATA-Block gem. Javascript mit CDATA korrekt in XHTML einbinden | mediaVROG Blog
    - CDATA-Block-Notation als comment

    [JavaScript] SyntaxError: unterminated character class -
    [JavaScript] lint warning: unexpected end of line; it is ambiguous whether these lines are part of the same statement

    Könnte es sein, dass dies ein Fehler im Validator ist. Ich habe ihn erst im Jan.2009 upgradet (CSE HTML Validator Standard v9.0100).

    Nun nochmal zum script und meinen Fragen:

    var month = parseInt(split[1] || 0, 10);

    Wird hier "0" -> month geladen (meine Annahme = OR-Verknüpfung), wenn ja bei welchem Inhalt von split[1] und warum erfolgt der load nicht bei day / year ?

    return ( year2 == year && month == month2 && day == day2 ) ? check : null;

    Was passiert hier bzw. was wird wann wohin ausgegeben ?

    Warum erkennt das script bei «var deinDatum = '30-12-100 15:14:131'; » nicht, dass das jahr falsch ist ?

    Gruss clavesana
    WIN XP prof. SP3

  15. #14
    Avatar von kkapsner
    kkapsner ist offline Moderator kkapsner befindet sich auf einem aufstrebenden Ast
    registriert
    28-03-2008
    Beiträge
    5.531

    AW: IF . . . /syntax

    Das Jahr 100 gab es doch?

  16. #15
    hesst ist offline Foren-Gott hesst befindet sich auf einem aufstrebenden Ast
    registriert
    19-05-2008
    Beiträge
    2.842

    AW: IF . . . /syntax

    das sind lint-meldungen? dann hat lint wohl ein problem mit DEM 2. / in
    replace(/[-/]/g, '.');
    zu haben. versuch mal
    replace(/[-\/]/g, '.');
    das dürfte nicht stören und lint vielleicht zufriedenstellen.

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein