• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[GELOEST] Gänsefüsse und mehr

petrei86

Mitglied
Hallo allerseits

Ich komme nicht mehr weiter. Kann mir hier jemand verraten was ich in folgendem JavaScript Code falsch schreibe?

Javascript:
            var ItemsHtml = '';               
            Feedback.Detail.Items.forEach(function(ItemContent, ItemId) {
                          
                ItemContent['Konto'] = "Hallo";
                
                ItemsHtml += '<div onClick=\'MyJs_Approve_Detail_ItemEditBox(' + ItemId + ', \'' + ItemContent['Konto'] + '\');\' class=\'ItemBox_Item\'>';               
                ItemsHtml += '    <div style=\"width: 60px; float: left;\"><strong>';
                ItemsHtml +=          ItemContent['Konto'];
                ItemsHtml += '    </strong></div>';
                ItemsHtml += '    <div style=\"width: 250px; float: left;\">';
                ItemsHtml += '         <strong>' + ItemContent['Title'] + '</strong><br>' + ItemContent['Note'];
                ItemsHtml += '    </div>';
                ItemsHtml += '    <div style=\"width: 85px; float: left; text-align: right;\">';
                ItemsHtml += '         <strong>' + ItemContent['AmountDetail'] + '</strong><br>' + ItemContent['TaxRate'] + '% ' + ItemContent['TaxType'] + ' / ' + ItemContent['AccType'];
                ItemsHtml += '    </div>';
                ItemsHtml += '</div>';
            }); 
            $('#ItemList').html(ItemsHtml);


Auf der Chrome Console bekomme ich immer:
Code:
Uncaught SyntaxError: Unexpected end of input


Auch das hier führt mich nicht weiter:
Javascript:
ItemsHtml += '<div onClick=\'MyJs_Approve_Detail_ItemEditBox(' + ItemId + ', ' + ItemContent['Konto'] + ');\' class=\'ItemBox_Item\'>';

Code:
Uncaught ReferenceError: Hallo is not defined

THX
 
Werbung:
Mir sind da ein paar potenzielle Fehler aufgefallen, aber anstatt immer einen Additionszuweisungsoperator (+=) zu benutzen, benutze einfach einen Multiline-String. Dort ist auch String-Interpolation möglich, sprich: Du kannst Variablen ein deinem String ausgeben.

Kleines Beispiel:
Code:
let stringVariable = "Mein Text";
let arrayVariable = ["Ausgabe1", "Ausgabe2", "Ausgabe3"];

// Multiline strings werden durch backquotes (``) eingegrenzt
let myMultilineString = `
<div>
  <p>${stringVariable}</p>
  <p>${arrayVariable[1]}</p>
</div>
`;

Du kannst in den Interpolationen auch Funktionen aufrufen usw..

Ich würde keine weitere Zeit damit verschwenden bei dir den Fehler zu suchen, sondern es umschreiben und schauen, ob es immer noch Fehler gibt.

Und das escapen von quotes (' oder ") kannst du dir dann auch sparen.

Ansonsten hat @basti1012 eigentlich recht. I.d.R. weist deine Fehlermeldung auf irgendeine Klammer hin, die nicht richtig gesetzt wurde. Mein Beitrag soll nur ein kleiner Verbesserungsvorschlag sein, um die das Leben einfacher zu machen.
 
Werbung:
Ich hatte meinen Beitrag wohl geändert wo du geschrieben hast @Aaron3219 Sorry!
Ich schrieb ja das irgendwo nee Klammer zu viel ist oder zu wennig.
Da aber im geposteten Code die Klammern stimmen hatte ich es wieder gelöscht.

Deswegen wäre Link oder Kompletten Code schon gut weil wahrscheinlich irgendwo anders nee Klammer Fehlt
 
Das Problem ist gelöst. Bin aufgrund @Aaron3219 zu folgender Schreibweise gekommen.

Javascript:
            let ItemsHtml = "";
            Feedback.Detail.Items.forEach(function(ItemContent, ItemId) {
                ItemsHtml += `<div onClick="MyJs_Approve_Detail_ItemEditBox('${ItemId}', '${ItemContent.Konto}')" class="ItemBox_Item">
                                    <div style="width: 60px; float: left;">
                                        <strong>${ItemContent.Konto}</strong>
                                    </div>
                                    <div style="width: 250px; float: left;">
                                        <strong>${ItemContent.Title}</strong><br>${ItemContent.Note}
                                    </div>
                                    <div style="width: 85px; float: left; text-align: right;">
                                        <strong>${ItemContent.AmountDetail}</strong><br>${ItemContent.TaxRate}% ${ItemContent.TaxType} / ${ItemContent.AccType}
                                    </div>
                              </div>`;
            });
            $("#ItemList").html(ItemsHtml);

@basti1012 - Habe den Code davor 3 mal auf offene Klammern geprüft. Keine einzige gefunden.

Anzumerken gibt es noch das mein erster Code funktioniert hat wenn meine Funktion MyJs_Approve_Detail_ItemEditBox nur einen Parameter enthielt. Sobald ich diese auf zwei Parameter erweitert habe, kam der Fehler betreffend der offenen Klammer.

Besten Dank an @Aaron3219 und @basti1012, schönen Weihnachtstag.
 
Zurück
Oben