Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Kann Fehler in JavaScript-Funktion nicht nachvollziehen.

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
AlpBenni
PostRank 1
PostRank 1
Beiträge: 22
Registriert: 04.04.2008, 08:30

Beitrag von AlpBenni » 29.04.2008, 08:09

Folgende Funktion ist ein Beispiel von Google. Das funktioniert natürlich auch einwandfrei.

Code: Alles auswählen

function callbackTab(tabId, feedUrl) {
var showFeedDesc = prefs.getBool("showFeedDesc");
var summaries = prefs.getInt("summaries");
var entries = prefs.getInt("entries");
var renderHtml = prefs.getBool("renderHtml");
var showTimestamp = prefs.getBool("showTimestamp");
var container = _gel(tabId);

// Display loading message before fetching feed.
container.innerHTML = '<div class="statusLabel">Loading...</div>';

// Fetch feed and return it as a JSON object.
// Callback function is defined within local scope.
_IG_FetchFeedAsJSON&#40;
feedUrl,
function&#40;feed&#41; &#123;
if &#40;typeof feed == "undefined" || typeof feed.Entry == "undefined"&#41; &#123;
container.innerHTML = '<div class="statusLabel">Invalid feed URL&#58;<br>' + feedUrl + '</div>';
&#125; else &#123;
// Fetch feed successful. Generate HTML content from returned JSON object.
// Create feed header containing title and description.
var html = new Array&#40;&#41;;
html.push&#40;'<div class="feedHeader">'&#41;;
html.push&#40;'<div class="feedTitle">'&#41;;
html.push&#40;&#40;feed.Link != ""&#41; ? '<a target="_blank" href="' + _hesc&#40;feed.Link&#41; + '">' + _hesc&#40;feed.Title&#41; + '</a>' &#58; _hesc&#40;feed.Title&#41;&#41;;
html.push&#40;&#40;feed.Author != ""&#41; ? '<span class="feedAuthor"> by ' + _hesc&#40;feed.Author&#41; + '</span>' &#58; ""&#41;;
html.push&#40;'</div>'&#41;;
if &#40;showFeedDesc&#41; &#123;
html.push&#40;'<div class="feedDesc">' + _hesc&#40;feed.Description&#41; + '</div>'&#41;;
&#125;
html.push&#40;'</div>'&#41;;

// Iterate through each feed entry and generate list of content.
html.push&#40;'<ul class="feedList">'&#41;;
for &#40;var n = 0; n < feed.Entry.length; n++&#41; &#123;
var entry = feed.Entry&#91;n&#93;;
html.push&#40;'<li>'&#41;;
html.push&#40;'<a target="_blank" href="' + entry.Link + '"><b>' + _hesc&#40;entry.Title&#41; + '</b></a>'&#41;;
if &#40;typeof entry.Summary != "undefined" && entry.Summary != ""&#41; &#123;
var summary = document.createElement&#40;"div"&#41;;
summary.innerHTML = &#40;summaries == 0&#41; ? entry.Summary &#58; entry.Summary.substr&#40;0, summaries&#41;;
html.push&#40;'<div class="entrySummary">'&#41;;
html.push&#40;&#40;renderHtml ? summary.innerHTML &#58; _hesc&#40;summary.innerHTML&#41;&#41;&#41;;
html.push&#40;'</div>'&#41;;
&#125;
if &#40;!isNaN&#40;entry.Date&#41; && showTimestamp&#41; &#123;
html.push&#40;'<div class="entryTimestamp">&#91;' + new Date&#40;entry.Date * 1000&#41;.toLocaleString&#40;&#41; + '&#93;</div>'&#41;;
&#125;
html.push&#40;'</li>'&#41;;
&#125;
html.push&#40;'</ul>'&#41;;
container.innerHTML = html.join&#40;""&#41;;
&#125;

// Resize iframe height to fit content.
_IG_AdjustIFrameHeight&#40;&#41;;
&#125;,
entries,
&#40;summaries > -1&#41;
&#41;;
&#125;
Jetzt mein Problem: wenn ich eine bestimmte Kleinigkeit ändere, wird die Funktion nur noch bis zu folgender Position richtig duchgearbeitet, das Wichtige fehlt also.

Code: Alles auswählen

// Display loading message before fetching feed.
container.innerHTML = '<div class="statusLabel">Loading...</div>';
Meine Änderung betrifft nur einen einzigen Buchstaben (Großschreibung in Kleinschreibung geändert):

Code: Alles auswählen

html.push&#40;&#40;feed.Author != ""&#41; ? '<span class="feedAuthor"> by ' + _hesc&#40;feed.Author&#41; + '</span>' &#58; ""&#41;; 
geändert zu

Code: Alles auswählen

html.push&#40;&#40;feed.author != ""&#41; ? '<span class="feedAuthor"> by ' + _hesc&#40;feed.author&#41; + '</span>' &#58; ""&#41;; 
Woran liegt das? Ich kann den Fehler einfach nicht nachvollziehen.

btw: In der XML, aus der gelesen wird, ist alles klein geschrieben (also "author").

Vielen Dank im Voraus.
Benni

PS: hier der vollständige Code zum Selbertesten:
https://code.google.com/apis/gadgets/docs/gs.html

Beispiel: "Feed in Tabs"