php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ?

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 23-11-2006, 19:38
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Array - zählt IE falsch? Nachtrag !!

Hi,
bastel mir gerade eine Ausklapp Funktion für ein News Archive.
Damit bei abgeschalteten Javascript trotzdem alles angezeigt wird, wird das Menu beim Laden der Seite eingeklappt:
PHP-Code:
function initNewsArchive(){
 try{
    
target document.getElementById('right_column_newsarchive_box').firstChild.childNodes;
         for(
i=0itarget.length 1i++){
                
target[i].firstChild.nextSibling.style.display "none";
         }
}catch(
e){alert(e);}   

Das klappt auch erstmal, aber!
Wenn ich in der for Bedingung nur:
target.length
schreibe werfen mir FF und Opera einen Out Of Index Fehler aus, deshalb das
target.length - 1

So wird aber im IE das letzte Element nicht auf display=none; gesetzt.
Lasse ich die - 1 weg gehts im IE, aber die anderen Browser moseren.

Mein jetziger Notbehelf wäre:
}catch(e){ /* es gibt einen Fehler */}

aber das ist ja nicht unbedingt sauber.
Weiß einer eine bessere Lösung bzw. was mache ich falsch?
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx

Geändert von mcmurphy (24-11-2006 um 16:43 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 23-11-2006, 19:52
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard Re: Array - zählt IE falsch?

Was für Knoten(-Typen) enthält target denn überhaupt ...?

("Beachten sie" bzgl. childNodes in SELFHTML beachtet?)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #3 (permalink)  
Alt 23-11-2006, 19:56
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hier der Rest vom Code:
PHP-Code:

function toggleNewsArchive(obj){
        try{
            
parentLI obj.parentNode;
            
parentUL parentLI.parentNode;
            for(
i=0parentUL.childNodes.length 1i++){
                
parentUL.childNodes[i].firstChild.nextSibling.style.display "none";   
            }
            
obj.nextSibling.style.display "block";
        }catch(
e){alert(e);}     
}
</script>            
<div  class="right_column_box  clearfix" id="right_column_newsarchive_box">
 <ul>
  <li><a href="#" onclick="toggleNewsArchive(this); return false;">2006</a>
    <ul>
      <li><a href="#" onfocus="if(this.blur)this.blur();">Januar</a></li>
      <li><a href="#" onfocus="if(this.blur)this.blur();">Februar</a></li>
<!-- etc, Kommentare stehen im Quellcode nicht drin-->
    </ul>
  </li>
   <li><a href="#"  onclick="toggleNewsArchive(this); return false;">2005</a>
        <ul>
           <li><a href="#" onfocus="if(this.blur)this.blur();">Januar</a></li>
           <li><a href="#" onfocus="if(this.blur)this.blur();">Februar</a></li>
<!-- etc -->
        </ul>
    </li>
     <li><a href="#"  onclick="toggleNewsArchive(this); return false;">2004</a>
         <ul>
             <li><a href="#" onfocus="if(this.blur)this.blur();">Januar</a></li>
             <li><a href="#" onfocus="if(this.blur)this.blur();">Februar</a></li>
             <li><a href="#" onfocus="if(this.blur)this.blur();">März</a></li>
<!-- etc -->
         </ul>
      </li>                 
 </ul>
<script type="text/javascript">initNewsArchive();</script>
</div> 
SelfHtml:
"Der Netscape 6.1 und der Internet Explorer 5.0 Macintosh Edition interpretieren im body-Element und in allen untergeordneten Knoten bereits einen Zeilenumbruch oder ein Leerzeichen im Quelltext zwischen Elementknoten als einen eigenen Kindknoten mit dem Namen #text. Auch HTML-Kommentare bilden eigene Knoten und werden als Knoten mit dem Namen #comment behandelt."

ist aber der Explorer 6.0...
werde trotzdem mal alle Umbrüche zwischen den Tag's rausnehmen..

P.S.: sind meine ersten Übungen in DOM ..
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx

Geändert von mcmurphy (23-11-2006 um 20:10 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 23-11-2006, 20:17
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Warum nutzt du nicht einfach getElementsByTagName, wenn du alle Knoten mit einem bestimmten Knotennamen unterhalb eines Knotens haben willst?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 23-11-2006, 20:23
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Warum nutzt du nicht einfach getElementsByTagName, wenn du alle Knoten mit einem bestimmten Knotennamen unterhalb eines Knotens haben willst?
Wie wäre denn da die Syntax?
Ich will ja auch nicht alle ul ausblenden.....

Und auch wenn ich diese Lösung nehme:
merkwürdig ist das unterschiedliche Zählverhalten immer noch...
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx
Mit Zitat antworten
  #6 (permalink)  
Alt 24-11-2006, 08:26
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Wenn ich in der for Bedingung nur:
target.length
schreibe werfen mir FF und Opera einen Out Of Index Fehler aus, deshalb das
target.length - 1
Dürfte dasselb sein wie in php in einer for-Schleife bis count(array). Arrays beginnen nun mal beim Element 0 und der count wird dir trotzdem eine 1 zurückgeben. Wenn du durch ein Array gehst dann musst du immer bis zu count(array) -1 gehen. Das ist durchaus normal.

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #7 (permalink)  
Alt 24-11-2006, 10:29
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Wenn du durch ein Array gehst dann musst du immer bis zu count(array) -1 gehen. Das ist durchaus normal.
Jau, das kenne ich aber der IE 6 anscheinend nicht ...
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx
Mit Zitat antworten
  #8 (permalink)  
Alt 24-11-2006, 10:34
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Jau, das kenne ich aber der IE 6 anscheinend nicht ...
Kann mir beim besten Willen nicht vorstellen, dass beim IE Arrays beim Element 1 beginnen würden. Vlllt wirft der IE nur keinen Fehler

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #9 (permalink)  
Alt 24-11-2006, 11:01
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Kann mir beim besten Willen nicht vorstellen, dass beim IE Arrays beim Element 1 beginnen würden.
Tut er auch nicht, aber er scheint length anders zu händeln als die anderen Browser.

mit array.length zählt er durch, mit array.length - 1 läßt er mir das letzte Element weg
Hiermit
PHP-Code:
for(i=0itarget.length 1i++){
                
target[i].firstChild.nextSibling.style.display "none";
                
alert(target[i].firstChild.nextSibling.nodeType);
         } 
gibt er mir auch nur zweimal eine Alert Box mit einer 1 (=Elementknoten) aus, er verhaspelt sich also auch an keinem Leerzeichen / Kommentar etc. (3 / 8)

Hat einer von euch den Code mal ausprobiert?

P.S.:
Das hier:
PHP-Code:
var Zahlen = new Array(1248163264128256);
    for(
i=0iZahlen.length i++){
        
alert(Zahlen[i]);
    } 
macht ja alle Browser gleich ....
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx

Geändert von mcmurphy (24-11-2006 um 11:06 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 24-11-2006, 11:04
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von mcmurphy
Jau, das kenne ich aber der IE 6 anscheinend nicht ...
Ich vermute immer noch, dass du nicht berücksichtigt hast, mit welcher Art von Kindelement du es jeweils zu tun hast. (Mein "Beachten Sie", auf das ich hinaus wollte, ist übrigens ein leicht anderes als dein zitiertes - mal 'ne aktuelle SELFHTML-Version ziehen?)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 24-11-2006, 11:21
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Ich vermute immer noch, dass du nicht berücksichtigt hast, mit welcher Art von Kindelement du es jeweils zu tun hast
Das wollte ich ja hiermit:
PHP-Code:
for(i=0itarget.length 1i++){
                
target[i].firstChild.nextSibling.style.display "none";
                
alert(target[i].firstChild.nextSibling.nodeType);
         } 
rausbekommen.

Aber Wahsaga hat wie (fast )immer recht (mein SelfHtml ist 8.0, aktuell ist 8.1.1):
habe im Code jetzt mal sämtliche Umbrüche rausgenommen, jetzt geht's ohne length - 1.
Da scheint der IE mal als einziger Standard konform zu arbeiten

Aber so kann der Code nicht bleiben, diese ellenlange Zeile kann ja keinMensch warten.

Suche mal die explizite Stelle und werde das Ergebniss hier posten.
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx
Mit Zitat antworten
  #12 (permalink)  
Alt 24-11-2006, 11:41
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Also, wenn es interessiert:
Statt:
PHP-Code:
      </ul>
    </
li>
  </
ul>
 <
script type="text/javascript">initNewsArchive();</script>
</div> 
PHP-Code:
      </ul>
    </
li></ul><!-- -->
 <
script type="text/javascript">initNewsArchive();</script>
</div> 
Frage an Wahsaga:
das hätten mir die Browser aber doch mit dem Code schnipsel aus meinem letzten Post anzeigen müssen (>> nodeType)
Zitat:
Gemäß dem DOM stellt bereits ein Zeilenumbruch oder ein Leerzeichen im Quelltext zwischen Elementknoten einen eigenen Text-Kindknoten dar.
Text-Kindknoten >> nodeType == 3
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx
Mit Zitat antworten
  #13 (permalink)  
Alt 24-11-2006, 12:51
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Ich verstehe immer noch nicht, warum du's dir so kompliziert machst.

Wozu überhaupt jedes Mal alle in Frage kommenden Knoten durchlaufen?
Da merke ich mir doch lieber, welches Element ich zuletzt sichtbar gemacht habe - und wenn dann ein neues sichtbar gemacht werden soll, mache ich dabei das vorherige wieder unsichtbar.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #14 (permalink)  
Alt 24-11-2006, 13:14
mcmurphy
 PHP Junior
Links : Onlinestatus : mcmurphy ist offline
Registriert seit: Aug 2003
Ort: Berlin
Beiträge: 890
mcmurphy zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Da merke ich mir doch lieber, welches Element ich zuletzt sichtbar gemacht habe
müßte ich dafür nicht id's vergeben?
Genau das wollte ich vermeiden....
Aber es klappt ja jetzt ...
Fand auch den Ansatz einfacher:
- Resete alles
- Mach das ausgewählte sichtbar

BTW: THX
__________________
"I don't want to belong to any club that would accept me as a member."

Groucho Marx
Mit Zitat antworten
  #15 (permalink)  
Alt 24-11-2006, 13:38
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von mcmurphy
müßte ich dafür nicht id's vergeben?
Nein - nur die Elementreferenzen merken. (Schrieb ich dir das nicht letztens schon mal - oder war's bei jemand anderem?)
Zitat:
Fand auch den Ansatz einfacher:
- Resete alles
- Mach das ausgewählte sichtbar
Finde ich nicht merkbar einfacher - abgesehen davon, dass es natürlich weniger perfomant ist (auch wenn sich das hier kaum bemerkbar machen dürfte).
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:59 Uhr.