zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden jQuery String kürzen - Fehler im IE

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 08.06.2011, 00:39
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.11.2010
Beiträge: 17
enibas befindet sich auf einem aufstrebenden Ast
Standard jQuery String kürzen - Fehler im IE

Hallo,

auf einer Seite werden per PHP-Include Daten eines externen Dienstleisters geladen. Ein Linktext soll nachträglich etwas eingekürzt werden. Ich habe versucht, das mit jQuery zu realisieren. Das klappt im Firefox und im Safari gut, nur im Internet Explorer gibt es eine Fehlermeldung:

Meldung: 'null' ist Null oder kein Objekt
Zeile: 129 (das ist die Zeile mit substr)
Zeichen: 1
Code: 0

Und hier der betreffende Code:
Code:
$(document).ready(function(){
var projekt = $("div#box div.content div.entry p.itemtitle a");
var projtitel=projekt.html();
projtitel=projtitel.substr(70);
projekt.css({display: "none"}).html(projtitel).show();
});
Ich habe keinen Schimmer, was daran falsch sein soll. Könnt Ihr mir helfen?

Gruß und danke
Enibas
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 08.06.2011, 09:38
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Nein, wir können dir nicht helfen. Dazu fehlen die nötigen Informationen. Welcher Darstellungsmodus? Wie sieht der HTML Code aus?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 08.06.2011, 11:04
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.11.2010
Beiträge: 17
enibas befindet sich auf einem aufstrebenden Ast
Standard

Doctype, Darstellungsmodus, jQuery-Version:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
...
<meta http-equiv="X-UA-Compatible" content="IE=7">
...
<script language="Javascript" type="text/javascript" src="../scripte/jquery-1.4.4.min.js"></script>
HTML-Code wird von einem externen Javascript erzeugt:
Code:
<div id="box">
<div class="content">

<div class="entry">
<p class="itemtitle"><a href="..." target="_blank" style="">Projekttitel</a></p>
<p class="itemdesc">Text</p>
<div class="clear"></div>
</div>
 ...
</div>
</div>
Hilft das weiter?

Gruß und danke
Enibas
Mit Zitat antworten
  #4 (permalink)  
Alt 08.06.2011, 11:10
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 29.07.2005
Beiträge: 1.073
xm22 befindet sich auf einem aufstrebenden Ast
Standard

Hast Du einen Bsp.-Link? Hast Du Dir mal ausgeben lassen, ob projekt tatsächlich ein Element enthält? Von welchem Typ ist projtitel an der Stelle, wo Du substr darauf anwendest?
__________________
... Meine Meinung
Mit Zitat antworten
  #5 (permalink)  
Alt 08.06.2011, 11:25
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.11.2010
Beiträge: 17
enibas befindet sich auf einem aufstrebenden Ast
Standard

Danke für die Denkanstöße.

Habe in das Script zwei Zeilen eingefügt:
Code:
if (!projekt.length) return;
var projtitel=projekt.html();
alert(typeof projtitel);
projtitel=projtitel.substr(70);
Im Firefox läuft alles ohne Probleme, projtitel ist string.
Der IE steigt schon weiter oben aus, projekt ist offensichtlich leer. Wie kann das sein?

Gruß, Enibas
Mit Zitat antworten
  #6 (permalink)  
Alt 08.06.2011, 11:51
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.11.2010
Beiträge: 17
enibas befindet sich auf einem aufstrebenden Ast
Standard

Problem gelöst! Die id "box" war zwei Mal vergeben. Wahrscheinlich lag es daran, dass sowohl der Script-Aufruf als auch das zurückgelieferte div diese id zugewiesen hatten.

Dann enthielt projtitel endlich auch im IE einen String, allerdings ohne die im Firefox auftauchenden vorangestellten Leerzeichen. Somit ergab substr in beiden Browsern unterschiedliche Ergebnisse. Das konnte ich mit jQuery projtitel=$.trim(projtitel); beseitigen. Jetzt funktioniert alles.

Danke fürs Mitraten.

Gruß, Enibas
Mit Zitat antworten
  #7 (permalink)  
Alt 08.06.2011, 11:53
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Also mein IE macht mit deinem Code das absolut gleich wie Firefox. Allerdings ist dein substr falsch, denn es löscht den Inhalt bis zum 70. Zeichen. Du willst wahrscheinlich eher:
Code:
projtitel = projtitel.substring(0, 70);
Mit Zitat antworten
  #8 (permalink)  
Alt 08.06.2011, 14:28
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.11.2010
Beiträge: 17
enibas befindet sich auf einem aufstrebenden Ast
Standard

@protonenbeschleuniger:
Wahrscheinlich haben sich unsere Posts überschnitten.

Zitat:
Allerdings ist dein substr falsch, denn es löscht den Inhalt bis zum 70. Zeichen.
Nein, wie schon geschrieben, standen im Firefox ungefähr 40 Leerzeichen am Anfang des Strings. Zusammen mit den drei zu löschenden Wörtern kam ich dann auf 70 Zeichen, nach denen die Ausgabe beginnen sollte.

Falsch war allerdings, dass ich jeden String der jQuery-Collection gegen den ersten gekürzten austauschte. So gab es am Ende mehrere Einträge, die alle denselben Projekttitel hatten. Da fehlte eine weitere Schleife. Die geänderte Stelle im Script:
Code:
$(document).ready(function(){
var projekt = $("div#box div.content div.entry p.itemtitle a");
projekt.each(function() {
	var projtitel=$.trim($(this).html());
	$(this).css({display: "none"}).html(projtitel.substr(37)).show();
});
});
Gruß, Enibas
Mit Zitat antworten
  #9 (permalink)  
Alt 08.06.2011, 15:08
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von enibas Beitrag anzeigen
Nein, wie schon geschrieben, standen im Firefox ungefähr 40 Leerzeichen am Anfang des Strings. Zusammen mit den drei zu löschenden Wörtern kam ich dann auf 70 Zeichen, nach denen die Ausgabe beginnen sollte.
Doch!
Ich hab deinen Quellcode benutzt
Code:
projtitel=projtitel.substr(70);
Das hat dazu geführt, dass das Ergebnis komplett gelöscht wurde, wenn man den von dir gezeigten HTML Code verwendet hat.

Was du da beschreibst klingt nach wildem rumgerate und dem Versuch irgendwelche Workarounds zu schustern, dass das in anderen Browser nicht funktionieren muss ist klar, war aber bei deiner Ausgangsfrage nicht erkennbar. Übrigens genauso wenig wie die doppelten IDs, du solltest in Zukunft schon versuchen deine Frage so zu formulieren, dass sie für Aussenstehende nachvollziehbar ist.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 08.06.2011, 17:35
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 09.11.2010
Beiträge: 17
enibas befindet sich auf einem aufstrebenden Ast
Standard

@ protonenbeschleuniger:

Zitat:
Das hat dazu geführt, dass das Ergebnis komplett gelöscht wurde, wenn man den von dir gezeigten HTML Code verwendet hat.
Ja, Du hast recht, wenn man den hier geposteten Quelltext original nimmt. Die echten Inhalte wollte ich hier nicht reinstellen, weil es um Kundeninterna geht, die dort auch erst abgesegnet werden müssen. Insofern war das nicht ganz korrekt, sorry.

Zitat:
... und dem Versuch irgendwelche Workarounds zu schustern
Klar sind das Workarounds. Es ging um das Zurechtbiegen von externen Inhalten, die eben nur genau so geliefert werden, aus Kundensicht auf deren Website in dieser Form aber wenig Sinn machen.

Zitat:
... du solltest in Zukunft schon versuchen deine Frage so zu formulieren, dass sie für Aussenstehende nachvollziehbar ist.
Ja, ich werde versuchen, mich beim nächsten Mal klarer auszudrücken und den kompletten Quelltext zu liefern. Das ist manchmal schwierig abzuwägen, wenn es sich um ungelegte Eier handelt ...

Trotzdem vielen Dank für Deine Mühe. Manchmal hilft ja es schon, wenn man selbst darüber schreibt - ein Monolog, ein paar Stichwortgeber und die Groschen fallen.

Gruß, Enibas
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Redesign für Steiner Cycling Team pkipper Site- und Layoutcheck 11 09.02.2011 12:25
JQuery + Wordpress VoinG Javascript & Ajax 0 29.12.2008 16:03
String ersetzen mit jQuery Schneemann Javascript & Ajax 1 20.08.2007 15:57
PHP: ereg_replace verursacht fehler nach Umstellung auf UTF-8 braindead Serveradministration und serverseitige Scripte 5 02.07.2007 10:28


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:28 Uhr.