Antworten auf deine Fragen:
Neues Thema erstellen

[CS6] - Bildhelligkeit über JavaScript

G

Gelöschtes Mitglied 549897

Guest

Hi,

gerade hat mich JavaScript voll im Griff, und ich bin dabei das Scripten für Photoshop zu erlernen.
Ich möchte gerne eine Funktion realisieren, die die mittlere Bildhelligkeit in einem Bildbereich bestimmt, und danach dann die eine oder andere Variable mit einer anderen füllt.
Das Script soll nachher sagen:

Code:
hell = new solidColor;
hell.rgb.red = 255;
hell.rgb.blue = 255;
hell.rgb.green = 255;
dunkel = new solidColor;
dunkel.rgb.red = 000;
dunkel.rgb.blue = 000;
dunkel.rgb.green = 255;

if (helligkeit > 50) { //Beide Werte entweder in Prozent oder von mir aus auch auf der Skala 0-255
    textebene.textItem.color = hell
}
else {
    textebene.textItem.color = dunkel
}

Aber wie kann ich die mittlere Bildhelligkeit bestimmen? Geht das in Kombination mit einer Aktion die wie folgt aussieht:
Hintergrundebene duplizieren
Ebene benennen
Auswahl erstellen
Gaußscher Weichzeichner
Skripten
Ebene löschen //Damit wäre dann die duplizierte Ebene gemeint

Über Antworten wäre ich erfreut
 

Photoshop

G

Gelöschtes Mitglied 549897

Guest

Wusste ich noch gar nicht, dass es den gibt. Also Ebene duplizieren, auswahl, Filter und dann? Wie les ich den aus? Sorry, bin halt Neuling :eek:
 

ph_o_e_n_ix

acromyniker

Nur weil du Neuling bist, heißt das ja nicht, dass du automatisch eine Lösung auf dem Silbertablett geliefert bekommst...

Gerade als Neuling sollte man sich selbst um Antworten bemühen, denn nur so bekommt man auch mehrere Lösungswege und deren Probleme mit. Wenn du hingegen bei jedem kleinen Problem sofort nach einer Lösung bettelst und diese womöglich auch noch bekommst, wirst du nie dazu lernen...

Eine sehr ergiebige Quelle für Skriptprobleme ist - wer hätte es gedacht - die Homepage des Herstellers...

http://forums.adobe.com/thread/509602
 
G

Gelöschtes Mitglied 549897

Guest

Stimmt das, wenn ich in einem Dokument von 1200px Höhe und 1800px Breite die Farbe in einer Selektion von 85px am unteren Bildrand auswerten möchte?
Code:
function getSelectionColor( x, y, sampleSize ){
     try{
          activeDocument.selection.select([[1115,0],[1200,0],[1200,1800],[1115,1800]] SelectionType.REPLACE, 0, false);
          activeDocument.activeLayer.applyAverage();
          var re = RegExp( '[123456789]' );
          var sColor = new SolidColor();
          if ( activeDocument.mode == DocumentMode.GRAYSCALE ) {
              var gv = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
              sColor.gray.gray = 100 * (gv/255);
          }
          if ( activeDocument.mode == DocumentMode.RGB ) {
              sColor.rgb.red = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
              sColor.rgb.green = re.exec( activeDocument.channels[1].histogram.toString() ).index/2;
              sColor.rgb.blue = re.exec( activeDocument.channels[2].histogram.toString() ).index/2;
          }
          if ( activeDocument.mode == DocumentMode.LAB ) {
              var lv = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
              sColor.lab.l = 100 * ( lv/255 );
              sColor.lab.a = ( re.exec( activeDocument.channels[1].histogram.toString() ).index/2 ) - 128;
              sColor.lab.b = ( re.exec( activeDocument.channels[2].histogram.toString() ).index/2 ) -128;
          }
          if ( activeDocument.mode == DocumentMode.CMYK ) {
              var cv = re.exec(activeDocument.channels[0].histogram.toString() ).index/2;
              sColor.cmyk.cyan = 100 * (1-(cv/255));
              cv = re.exec(activeDocument.channels[1].histogram.toString() ).index/2;
              sColor.cmyk.magenta = 100 * (1-(cv/255));
              cv = re.exec(activeDocument.channels[2].histogram.toString() ).index/2;
              sColor.cmyk.yellow = 100* (1-(cv/255));
              cv = re.exec(activeDocument.channels[3].histogram.toString() ).index/2;
              sColor.cmyk.black = 100 * (1-(cv/255));
          }
          executeAction( charIDToTypeID('undo'), undefined, DialogModes.NO );
          return sColor;
     }catch(e){}
}
 
ph_o_e_n_ix möchte dir wahrscheinlich damit sagen:
Die Extendscript-Dokumentation für selection ist leider etwas unzureichend beschrieben. Erstelle eine selection immer nach dem Schema:
Code:
activeDocument.selection.select([[topleft_x,y],[bottomleft_x,y],[bottomright_x,y],[topright_x,y]], SelectionType.REPLACE (type | Standard-optional), 0 (feather | Standard-optional), false (antiAlias - true = Standard-optional));

… und vergiss bitte keine Kommata, wenn du die optionalen Parameter verwendest.
;)

Noch eine Frage:
Mit welchem Editor bearbeitest du eigentlich die Skripte?
 

ph_o_e_n_ix

acromyniker

Eigentlich hab ich ihm ganz bewusst das Schema nicht einfach aufgezeigt und den Komma-Fehler nur wage angedeutet, weil er es sich bisher bei anderen Problemen etwas einfach gemacht hat. ;)

Und da er das Skripten ja lernen möchte, wird er auf Grund der dürftigen Dokumentation Seitens Adobe ohnehin vieles im Internet recherchieren und andere Skripte auseinandernehmen müssen.
 
G

Gelöschtes Mitglied 549897

Guest

Der Kommafehler ist mir auch schon aufgefallen, hab ich auch behoben.
Das mit der Auswahl und dem Filter hab ich jetzt vorerst auf Eis gelegt, und das ganze über einen Dialog gelöst ;) Zwei Radiobuttons, wenn der eine Aktiv ist dann ist es weiße Schrift, wenn der andere Aktiv ist ist es schwarze.

ph_o_e_n_ix, ich bin dabei dein Script nachzubasteln. Bei der Auslesung der Daten scheitert es, der Part aus dem ExifStamp-Script welches ich erst modifiziert und danach noch einmal nachgeschrieben habe, funktioniert noch nicht. Deswegen möchte ich versuchen, das jetzt alles über folgendes Schema nachzubauen. Ich weis dass das ganze noch auskommentiert ist ;)
Code:
/* function datenerfassung(){
    var exifInfo = "";
    try {
        xml = doc.xmpMetadata.rawData;
        ObjektivOff = xml.indexOf("<aux:Lens>") + "<aux:Lens>".length;
        if(ObjektivOff > 0) {
            Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
            Objektiv = Objektiv.substr(0,Objektiv.indexOf("</aux:Lens>"));
            }
       try {
        KameraOff = xml.indexOf("<aux:Model>") + "<aux:Model>".length;
        if(KameraOff > 0) {
            Kamera = xml.substr(ObjektivOff, xml.length - ObjektivOff);
            Kamera = Kamera.substr(0,Kamera.indexOf("</aux:Model>"));
            }
    }
}
*/

Das sollte gehen, oder?

Nächstes Problem, die Textebene will nicht. Nachfolgend erst die Festlegung von farbe und dann noch die eigentliche Texterstellung.

Code:
function schemadialog(){
    var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    dialog.oben.radio1.value = true;
    dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    ok = dialog.show() == 1;
    if (dialog.oben.radio1.value = true) {
        farbe = hell
    }
    else {
        farbe = dunkel
    }
}
function generatetext() {
    textebene = doc.artLayers.add();
    textebene.kind = LayerKind.TEXT;
    textebene.name = "EXIF";
    textebene.textItem.color = farbe;
    textebene.textItem.content = "Hallo Welt";

Editoren sind Notepad++ und ExtendScript Toolkit
 
Zuletzt bearbeitet von einem Moderator:

ph_o_e_n_ix

acromyniker

Da bekomm ich echt Kopfschmerzen, wenn jemand von einem Ansatz zum anderen springt, ohne das Problem zu ergründen, wenn mal etwas nicht gleich funktioniert... ;)

Nungut, wenn du lieber manuell auswählen möchtest, welche Schriftfarbe verwendet werden soll, ist das natürlich dir überlassen...


Code:
var doc = activeDocument;

function schemadialog(){
    var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    dialog.oben.radio1.value = true;
    dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    ok = dialog.show() == 1;
    if (dialog.oben.radio1.value) {
farbe = new SolidColor
    farbe.rgb.red = 255
    farbe.rgb.green = 255
    farbe.rgb.blue = 255
    }
else {
farbe = new SolidColor
    farbe.rgb.red = 0
    farbe.rgb.green = 0
    farbe.rgb.blue = 0
    }
};

schemadialog();

function generatetext() {
var textebene = doc.artLayers.add();
    textebene.kind = LayerKind.TEXT;
    var textRef = textebene.textItem;
    textebene.textItem.kind = TextType.POINTTEXT;
    textebene.name = "EXIF";
    textebene.textItem.contents = "Hallo Welt";
    textebene.textItem.color = farbe
    }

generatetext();

Bei deinem zweiten Problem habe ich echte Zweifel, dass das funktionieren wird... zum einen folgt jedem "try" ein "catch" - dieser fehlt bei dir gänzlich...

Desweiteren bin ich mir nicht mal sicher, ob "aux:Model" wirklich existiert - oder meintest du exif:Model ?

Und hier stimmt bestimmt auch etwas nicht ganz, oder?

Code:
  Kamera = xml.substr(ObjektivOff, xml.length - ObjektivOff);
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 549897

Guest

Danke, ist mir auch schon aufgefallen ... Und ich komm schon wieder nicht weiter.

Code:
function datenerfassung(){
    var exifInfo = "";
    try {
        KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
        if(KameraOff > 0) {
            Kamera = xml.substr(KameraOff, xml.length - KameraOff);
            Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
            }
        }
    catch(e){}
    try {
        xml = doc.xmpMetadata.rawData;
        ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
        if(ObjektivOff > 0) {
            Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
            Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
            }
        }
    catch(exception){}
}

Mir wird eine ordnungsgemäße Textebene an gewünschter Position in gewünschter Farbe geliefert, aber leider steht dadrin nur "mit EF 50mm f/1.8 II", trotz
Code:
textebene.textItem.content = Kamera + " mit " + Objektiv
 

ph_o_e_n_ix

acromyniker

Ohne das komplette Skript zu kennen, kann man nur raten, wo der genaue Fehler liegt (und wenn ich mit meiner Vermutung richtig liege, dann gehst du gerade einen ohnehin unnötig komplizierten Weg...)
 
G

Gelöschtes Mitglied 549897

Guest

Was schlägst du denn vor?

Code:
#target Photoshop
app.bringToFront();
try{
    var doc = app.activeDocument;
}
catch(e){
    alert = ("Kein Dokument gefunden", "Dokumentenfehler");
}
//Variablen für die Werte
var Blende = "";
var ISO = "";
var Shutter = "";
var Objektiv = "";
var Kamera = "";
//Variablen für Offset
var BlendeOff = "";
var ISOOff = "";
var ShutterOff = "";
var ObjektivOff = "";
var KameraOff = "";
//Variablen für den Text
var font = "MyriadPro-LightIt";
var größe = 16;
var farbe = "";


function datenerfassung(){
    xml = doc.xmpMetadata.rawData;
    var exifInfo = "";
    try {
        KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
        if(KameraOff > 0) {
            Kamera = xml.substr(KameraOff, xml.length - KameraOff);
            Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
            }
        }
    catch(e){}
    try {
        ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
        if(ObjektivOff > 0) {
            Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
            Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
            }
        }
    catch(exception){}
    try {
        ShutterOff = xml.indexOf("<exif:ExposureTime>") + "<exif:ExposureTime>".length;
        if(ShutterOff > 0){
            Shutter = xml.substr.(ShutterOff, xml.length - ShutterOff);
            Shutter = Shutter.substr(0,Shutter.indexOf("</exif:ExposureTime>"));
            }
        }
    catch(e){}
    try {
        BlendeOff = xml.indexOf("<exif:Fnumber>") + "<exif:Fnumber>".length;
        if(BlendeOff> 0){
            Blende = xml.substr.(BlendeOff, xml.length - BlendeOff);
            Blende = Blende.substr(0,Blende.indexOf("</exif:Fnumber>"));
            }
        }
    catch(e){}
    }
function schemadialog(){
    var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    dialog.oben.radio1.value = true;
    dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    ok = dialog.show() == 1;
    if (dialog.oben.radio1.value) {
farbe = new SolidColor
    farbe.rgb.red = 255
    farbe.rgb.green = 255
    farbe.rgb.blue = 255
    }
else {
farbe = new SolidColor
    farbe.rgb.red = 0
    farbe.rgb.green = 0
    farbe.rgb.blue = 0
    }
};
function generatetext() {
var textebene = doc.artLayers.add();
    textebene.kind = LayerKind.TEXT;
    var textRef = textebene.textItem;
    textebene.textItem.kind = TextType.POINTTEXT;
    textebene.name = "EXIF";
    textebene.textItem.contents = Kamera + " mit " + Objektiv;
    textebene.textItem.color = farbe;
    textebene.textItem.size = 35;
    textebene.textItem.font = "MyriadPro-LightIt";
    textebene.textItem.position =  [10,1187];
    }
datenerfassung();
schemadialog();
if(ok == 1) {
    //generatetext();
    alert (Blende, "Test")
}

generatetext(); hab ich ausgeklammert und durch alert ersetzt, um erst einmal testen zu können.
 
Ganz einfach:
Entferne zuerst die überflüssigen Punkte deiner substr
Achte auf korrekte Groß-/Kleinschreibung deiner XML-Werte
Und zum Schluss ergänze noch deine Funktionsaufrufe durch ordentliche Rückgabe der gefundenen Werte.

Dann funktioniert auch alles wie gewünscht (Auch wenn dein Weg an sich ziemlich umständlich scheint).
 

ph_o_e_n_ix

acromyniker

Was schlägst du denn vor?
Dein Skript scheint ja auf StampExif zu basieren - wieso nutzt du dann nicht einfach dessen Struktur und Funktionen, und passt es deinen Bedürfnissen an?

Meiner Meinung nach wäre es viel einfacher gewesen, das Skript um die Teile zu erleichtern die nicht benötigt werden und dann die Funktionen hinzuzufügen, die du gerne zusätzlich hättest.

Ansonsten kann ich mich nur Pixxxelschubsers Beitrag anschließen ... und noch anmerken, dass du unbedingt noch die Einheiten (unit) für Lineal (ruler) und Text (type) festlegen solltest.
 
G

Gelöschtes Mitglied 549897

Guest

Das mit dem Anpassen hab ich versucht, hat leider nicht so ganz geklappt ... Lineal ist sowieso immer auf pixel. Stell ich nie um.

Darf ich Fragen, welches die überflüssigen Punkte sind? //edit: Gefunden
Das try-catch-Schema hab ich komplett von StampExif übernommen ...

Code:
#target Photoshop
app.bringToFront();
try{
    var doc = app.activeDocument;
}
catch(e){
    alert = ("Kein Dokument gefunden", "Dokumentenfehler");
}
//Variablen für die Werte
var Blende = "";
var ISO = "";
var Shutter = "";
var Objektiv = "";
var Kamera = "";
//Variablen für Offset
var BlendeOff = "";
var ISOOff = "";
var ShutterOff = "";
var ObjektivOff = "";
var KameraOff = "";
//Variablen für den Text
var font = "MyriadPro-LightIt";
var größe = 16;
var farbe = "";

/*****************************
*   DATENERFASSUNG    *
****************************/
    xml = doc.xmpMetadata.rawData;
    var exifInfo = "";
    try {
        KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
        if(KameraOff > 0) {
            Kamera = xml.substr(KameraOff, xml.length - KameraOff);
            Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
            }
        }
    catch(e){}
    try {
        ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
        if(ObjektivOff > 0) {
            Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
            Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
            }
        }
    catch(exception){}
    try {
        ShutterOff = xml.indexOf("<exif:ExposureTime>") + "<exif:ExposureTime>".length;
        if(ShutterOff > 0){
            Shutter = xml.substr(ShutterOff, xml.length - ShutterOff);
            Shutter = Shutter.substr(0,Shutter.indexOf("</exif:ExposureTime>"));
            }
        }
    catch(e){}
    try {
        BlendeOff = xml.indexOf("<exif:Fnumber>") + "<exif:Fnumber>".length;
        if(BlendeOff> 0){
            Blende = xml.substr(BlendeOff, xml.length - BlendeOff);
            Blende = Blende.substr(0,Blende.indexOf("</exif:Fnumber>"));
            }
        }
    catch(e){}
/*function schemadialog(){
    var dialog = new Window ('dialog','Farbschema', [200,200,500,365]);
    dialog.oben = dialog.add('panel',[15,10,285,80],'Bitte wählen sie eines der Farbschemen aus!');
    dialog.oben.radio1 = dialog.oben.add ('radiobutton', [15,0,100,80],'Hell');
    dialog.oben.radio1.value = true;
    dialog.oben.radio2 = dialog.oben.add ('radiobutton', [107,0,200,80],'Dunkel');
    dialog.unten = dialog.add('panel', [15,90,285,150],'Ausführen');
    dialog.unten.ok = dialog.unten.add('button', [25,15,85,35],'Ok', {name:'ok'});
    dialog.unten.cancel = dialog.unten.add('button', [100,15,200,35],'Abbrechen', {name:'cancel'});
    ok = dialog.show() == 1;
    if (dialog.oben.radio1.value) {
farbe = new SolidColor
    farbe.rgb.red = 255
    farbe.rgb.green = 255
    farbe.rgb.blue = 255
    }
else {
farbe = new SolidColor
    farbe.rgb.red = 0
    farbe.rgb.green = 0
    farbe.rgb.blue = 0
    }
};
function generatetext(Kamera, Objektiv, Blende, ISO, Shutter) {
var textebene = doc.artLayers.add();
    textebene.kind = LayerKind.TEXT;
    var textRef = textebene.textItem;
    textebene.textItem.kind = TextType.POINTTEXT;
    textebene.name = "EXIF";
    textebene.textItem.contents = Kamera + " mit " + Objektiv;
    textebene.textItem.color = farbe;
    textebene.textItem.size = 35;
    textebene.textItem.font = "MyriadPro-LightIt";
    textebene.textItem.position =  [10,1187];
    }
schemadialog();
if(ok == 1) {
    generatetext();
}*/
alert (Blende, "Test")

Wo liegt jetzt der Fehler? Hab das mal temporär umgebaut, um den Fehler finden zu können.
 
Zuletzt bearbeitet von einem Moderator:

ph_o_e_n_ix

acromyniker

Lineal ist sowieso immer auf pixel. Stell ich nie um.
Du selbst stellst die Einheiten vielleicht nicht um, es kann aber durchaus sein, dass z.B. beim verwenden eines anderen Skriptes dieses geschieht.

Daher gehören solche Dinge bei jedem halbwegs ernsthaften Programmierer zum Grundgerüst.

Darf ich Fragen, welches die überflüssigen Punkte sind? //edit: Gefunden
Ich interpretiere das jetzt einfach mal so, dass sich damit dein Problem gelöst hat...
Das try-catch-Schema hab ich komplett von StampExif übernommen ...
Das bedeutet ja aber nicht, dass man es nicht kürzen darf ... ;)
Code:
[...]
  try {
  KameraOff = xml.indexOf("<tiff:Model>") + "<tiff:Model>".length;
  if(KameraOff > 0) {
  Kamera = xml.substr(KameraOff, xml.length - KameraOff);
  Kamera = Kamera.substr(0,Kamera.indexOf("</tiff:Model>"));
  }
  {
  ObjektivOff = xml.indexOf("<exif:Lens>") + "<exif:Lens>".length;
  if(ObjektivOff > 0) {
  Objektiv = xml.substr(ObjektivOff, xml.length - ObjektivOff);
  Objektiv = Objektiv.substr(0,Objektiv.indexOf("</exif:Lens>"));
  }
  {
  ShutterOff = xml.indexOf("<exif:ExposureTime>") + "<exif:ExposureTime>".length;
  if(ShutterOff > 0){
  Shutter = xml.substr(ShutterOff, xml.length - ShutterOff);
  Shutter = Shutter.substr(0,Shutter.indexOf("</exif:ExposureTime>"));
  }
  {
  BlendeOff = xml.indexOf("<exif:Fnumber>") + "<exif:Fnumber>".length;
  if(BlendeOff> 0){
  Blende = xml.substr(BlendeOff, xml.length - BlendeOff);
  Blende = Blende.substr(0,Blende.indexOf("</exif:Fnumber>"));
  }}}}}
  catch(e){}
[...]
Das ließe sich zwar noch eine ganze Ecke weiter verkürzen, allerdings sollte das aktuell nicht dein primäres Problem sein - das kannst du hinterher immer noch tun...
 
… Wo liegt jetzt der Fehler? Hab das mal temporär umgebaut, um den Fehler finden zu können.
Die Antwort darauf hast du bereits bekommen. Ich zitiere mich einfach selbst:

Ganz einfach:
Entferne zuerst die überflüssigen Punkte deiner substr
Achte auf
korrekte Groß-/Kleinschreibung deiner XML-Werte
Und zum Schluss ergänze noch deine Funktionsaufrufe durch ordentliche Rückgabe der gefundenen Werte.

Dann funktioniert auch alles wie gewünscht …

Lies dich bitte in die Arbeitsweise einer function() {} ein. Die innerhalb einer function ermittelten Werte werden nicht automatisch an den Hauptteil des Skriptes zurückübergeben.

(Und da du ja selbst lernen möchtest, gibt es auch nur noch einen Schubser in die richtige Richtung.)
;)
 
G

Gelöschtes Mitglied 549897

Guest

Jetzt habe ich ja sogar die Funktion ausgebaut, aber klappen tut es trotzdem nicht.
 
Ich bin mir nicht ganz sicher, ob es witzig oder eher traurig ist.

Woher in aller Welt soll irgendwer, der nicht mit hellseherischen Fähigkeiten ausgestattet ist, wissen, an welcher Stelle deiner „ausgebauten Funktion“ der Fehler steckt??? Wie dir bereits mehrfach gesagt wurde: Zeige sie doch einfach!
:rolleyes:

Aber meine Kristallkugel hat mir gerade geflüstert, dass der Fehler immer noch in deiner halbfertigen Funktion zu suchen ist. Vergleichbar am ehesten mit einer try - catch - clause, in der man das catch „vergessen hat“.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.455
Mitglieder
67.558
Neuestes Mitglied
StarsMan
Oben