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 ?

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 15-07-2011, 17:57
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard JS: Variable undefiniert

Hallo,


Die Fehlerkonsole gibt mir einen Fehler aus den ich so nicht verstehe.
Es geht darum, dass ich eine Select-Box mit einem JS-Array befüllen möchte. Zum füllen selbst hat Google nichts ausgespuckt sondern nur zum hinzufügen. Also dachte ich mir, ändere das einfache ein wenig ab und dann passt das schon.

JS:
Code:
for (i in sCm) { 
  var neu = sCm[i]["name"];
  NeuerEintrag = new Option(document.selc.neu.text, document.selc.neu.text, false, true);
  document.selc.serie.options[document.selc.serie.length] = NeuerEintrag; 
}
In 'sCm[i]["name"]' steht definitv etwas drin, das habe ich mir ausgeben lassen.

HTML-Code:
<form name="selc" action=""><select class="dpdw" name="serie"></select></form>
Und mal abgesehen davon, dass die Select-Box nicht befüllt wird (obs daran wohl liegt?!), lautet der Fehler aus der Konsole 'document.selc.neu is undefined'. Aber die habe ich doch definiert bzw. ihr etwas zugewiesen?
  #2 (permalink)  
Alt 15-07-2011, 18:17
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Du verwendest die Variable neu nirgendwo. Mal davon abgesehen ist ein "var" in einer Schleife böse.
  #3 (permalink)  
Alt 15-07-2011, 18:41
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von h3ll Beitrag anzeigen
Mal davon abgesehen ist ein "var" in einer Schleife böse.
Aber nur, wenn man diese Variable dann in einer schleifeninternen Funktion benutzen will, was ja hier nicht passiert.

Für Interessierte: Wenn doch, heißt h3lls „böse“ konkret nur, dass dann diese Variable vom letzten Wert der Zählvariable abhängt, weil zum Zeitpunkt des Aufrufens der Funktion die Schleife bereits durchgelaufen ist. Abhilfe schafft hier eine zusätzliche Closure-Funktion. Siehe https://developer.mozilla.org/en/Jav...common_mistake

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
  #4 (permalink)  
Alt 15-07-2011, 19:07
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hallo,


Das die Variable bei jedem durchlauf in der Schleife überschrieben wir ist in meinen Augen nicht schlimm, der Inhalt dürfte zu dem Zeitpunkt längst ausgegeben worden und somit innerhalb der Schleife nicht mehr wichtig / notwendig sein.

Ich setze die Variable doch, so das sie dann später 'benutzt' werden kann - oder etwa nicht?
  #5 (permalink)  
Alt 15-07-2011, 19:09
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von medium22 Beitrag anzeigen
Das die Variable bei jedem durchlauf in der Schleife überschrieben wir ist in meinen Augen nicht schlimm, der Inhalt dürfte zu dem Zeitpunkt längst ausgegeben worden und somit innerhalb der Schleife nicht mehr wichtig / notwendig sein.

Ich setze die Variable doch, so das sie dann später 'benutzt' werden kann - oder etwa nicht?
Eben. Wie gesagt, es wird nur zum Problem, wenn du diese Variable in einer schleifeninternen Funktion benutzt, was du aber nicht machst.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
  #6 (permalink)  
Alt 15-07-2011, 19:20
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

So meinte ich das ja auch.

Aber warum gibt mir die Konsole einen Fehler aus bzw. warum wird die das Select nicht gefüllt?
  #7 (permalink)  
Alt 15-07-2011, 19:24
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von medium22 Beitrag anzeigen
Und mal abgesehen davon, dass die Select-Box nicht befüllt wird (obs daran wohl liegt?!), lautet der Fehler aus der Konsole 'document.selc.neu is undefined'. Aber die habe ich doch definiert bzw. ihr etwas zugewiesen?
Nein, hast du nicht.
Du hast eine Variable neu deklariert - die steht aber mit document.selc.neu in keinerlei Zusammenhang.

Lesen bildet: SELFHTML: JavaScript / Objektreferenz / elements (Schema 4)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
  #8 (permalink)  
Alt 15-07-2011, 19:38
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Die Sache ist, JavaScript verschiebt alle Variablendeklarationen automatisch an den Funktionsanfang. Also aus
Code:
function foo(value) {
    if (value) {
        var bar = value;
    }
}
wird intern
Code:
function foo(value) {
    var bar;

    if (value) {
        bar = value;
    }
}
Erster Code würde den Eindruck erwecken, dass die Variable nur deklariert wird, wenn die if-Bedingung zutrifft. Dem ist aber nicht so. Sie wird auf jeden Fall deklariert. Wenn var in einer for-Schleife steht, würde man denken, dass bei jedem Durchgang eine neue Variable deklariert wird. Dem ist aber auch nicht so, weil analog zu vorigem Beispiel das var automatisch aus der Schleife geschoben wird.

Wenn man JavaScript sauber programmiert, schreibt man alle Variablendeklarationen an den Anfang der Funktion (also so, wie es JavaScript sowieso intern macht), damit erst gar keine Missverständnisse entstehen können.

Das meine ich mit "böse".

Noch ein Beispiel:
Code:
function foo1() {
    bar = 456;
    var bar = 789;
}

function foo2() {
    bar = 456;
}

var bar;

bar = 123;
foo1();
alert(bar);
// 123

bar = 123;
foo2();
alert(bar);
// 456

Geändert von h3ll (15-07-2011 um 19:44 Uhr)
  #9 (permalink)  
Alt 15-07-2011, 22:59
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hm.., ist ja ziemlich bescheuert, dieses Verhalten von Variablen - finde ich. Dennoch finde ich deine Erklärung ziemlich gut h3ll - danke! Nur.., irgendwie kann ich die Schleifen wenden und drehen, vertiefen, etc. im Endeffekt würde ich immer wieder an genau dem Problem hängen bleiben. Jedenfalls mit meinen JS-Kenntnissen..

Den verlinkten Hinweis von wahsaga habe ich nun auch mehrmals gelesen, verstehe jedoch nicht, auf welchen Zweig der (der Hinweis!) mich leiten soll - ist irgendwie alles Bahnhof. Warum ist das befüllen einer Select-Box in im Unterschied zu php hier so dermassen umständlich?!
  #10 (permalink)  
Alt 15-07-2011, 23:25
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von medium22 Beitrag anzeigen
Den verlinkten Hinweis von wahsaga habe ich nun auch mehrmals gelesen, verstehe jedoch nicht, auf welchen Zweig der (der Hinweis!) mich leiten soll
Code:
<form name="formular">
  <select name="xyz"> ... </select>
</form>

// Nonsense:
var foo = "xyz";
document.formular.foo // spricht ein Formularelement mit dem Namen foo an -> ist also nicht das gewünschte

// Beispiel von SELFHTML, mit etwas logischem Nachdenken kombiniert:
var foo = "xyz";
document.formular.elements[foo]   // ergibt „eingesetzt“, Variable durch ihren Wert ausgetauscht:
document.formular.elements["xyz"] // A-ha - sieht doch der Syntax aus dem Beispiel schon zum verwechseln ähnlich ...!
Zitat:
ist irgendwie alles Bahnhof.
Vielleicht wäre eine Modelleisenbahn auch das geeignetere Hobby für dich
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
  #11 (permalink)  
Alt 16-07-2011, 00:18
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Code:
for (i in sCm) {
  NeuerEintrag = new Option(sCm[i]["name"]);  
document.forms["selc"].elements["serie"].options[document.forms["selc"].elements["serie"].length] = NeuerEintrag; 
}
Das Problem lag weniger an der zweiten sondern viel mehr an der ersten Zeile innerhalb der Schleife... Danke.

Off-Topic
Zitat:
Zitat von wahsaga
Vielleicht wäre eine Modelleisenbahn auch das geeignetere Hobby für dich
Okay! Deal! Aber nur wenn du dafür in den Zirkus gehst - mit roter Nase & Co.!
  #12 (permalink)  
Alt 16-07-2011, 06:52
Benutzerbild von mermshaus mermshaus
 Registrierter Benutzer
Links : Onlinestatus : mermshaus ist offline
Registriert seit: Jun 2009
Beiträge: 451
mermshaus wird schon bald berühmt werden
Standard

Habe das nicht großartig in älteren Browsern getestet, aber es ginge wohl auch so:

HTML-Code:
<!DOCTYPE html>

<html lang="en">

    <head>
        <meta charset="utf-8" />
        <title>New</title>
        <script type="text/javascript">
        /*<![CDATA[*/

        window.onload = function () {
            var selectElem = document.getElementById('test'),
                options    = ['Germany', 'USA', 'France', 'Japan'],
                i          = null,
                optionElem = null;

            for (i in options) {
                optionElem = document.createElement('option');
                optionElem.value = parseInt(i) + 1;
                optionElem.text  = options[i];
                selectElem.add(optionElem, null);
            }
        };

        /*]]>*/
        </script>
    </head>

    <body>
        <form method="post" action="">
            <p>
                <select name="country" id="test">
                    
                </select>
            </p>
        </form>
    </body>

</html>
Gute Ressource für JavaScript: https://developer.mozilla.org/en/JavaScript
  #13 (permalink)  
Alt 16-07-2011, 12:18
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zwischenfrage: Kann es sein, dass über innerHTML eingefügte Inhalte das CSS ignorieren?

Die Select-Box wird ja nun korrekt befüllt und bei einer änderung derer soll der dazugehörige Inhalt ausgegeben werden.
  #14 (permalink)  
Alt 16-07-2011, 12:22
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von medium22 Beitrag anzeigen
Zwischenfrage: Kann es sein, dass über innerHTML eingefügte Inhalte das CSS ignorieren?
Zwischenantwort: Nein.

Zitat:
Die Select-Box wird ja nun korrekt befüllt und bei einer änderung derer soll der dazugehörige Inhalt ausgegeben werden.
Aha. Und?
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
  #15 (permalink)  
Alt 16-07-2011, 12:48
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von wahsaga
Zwischenantwort: Nein.
Anscheinend wohl doch..

Füge ich den entsprechenden Inhalt direkt in den Code ein (also nichts dynamisches, ..) ist alles stimmig. Wird er aber über innerHTML eingefügt werden genau die Teile des CSS nicht mehr interpretiert die dort drin sind.

Statisch:

HTML-Code:
<div id="sm_box2">
  <div><p><img src="s/a.gif" border="0"> Beschreibung A</p></div>
  <div><p><img src="s/b.gif" border="0"> Beschreibung B</p></div>
  <div><p><img src="s/c.gif" border="0"> Beschreibung C</p></div>
    </div>
Dynamisch:

HTML-Code:
<script type="text/javascript">
/* Teilauszug */
inhalt = "<div><p><img src='s/" + sCm[i]["sm"][x]["file"] + "' border='0'><br />" + sCm[i]["sm"][x]["name"] + "</p></div>";

/* */
document.getElementById('sm_box2').innerHTML = inhalt;
</script>
    <div id="sm_box2">
    </div>
Thema geschlossen

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
undefiniert: imagecreatefromjpeg() rince12345 Fragen zu Installation & Konfiguration (LAMP, WAMP & Co.) 0 19-03-2008 14:58
Value undefiniert? RanzigeMilch HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS 2 16-08-2007 10:35
load(language) und undefiniert variable RoNoX PHP Developer Forum 3 07-03-2006 16:54
Undefiniert? dani_o PHP Developer Forum 11 16-12-2005 12:01
Warum ist Variable undefiniert? trekkie2003 PHP Developer Forum 4 13-08-2002 21:18

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 03:40 Uhr.