Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.javascript > #4689 > unrolled thread
| Started by | Maik Koenig <usenetspam@maikkoenig.de> |
|---|---|
| First post | 2015-08-12 01:02 +0200 |
| Last post | 2015-08-14 08:35 +0200 |
| Articles | 17 — 5 participants |
Back to article view | Back to de.comp.lang.javascript
Schleife für document.getElementBy ... innerHTML? Maik Koenig <usenetspam@maikkoenig.de> - 2015-08-12 01:02 +0200
Re: Schleife für document.getElementBy ... innerHTML? Maik Koenig <usenetspam@maikkoenig.de> - 2015-08-12 01:07 +0200
Re: Schleife für document.getElementBy ... innerHTML? "Christoph M. Becker" <cmbecker69@arcor.de> - 2015-08-12 01:34 +0200
Re: Schleife für document.getElementBy ... innerHTML? Maik Koenig <usenetspam@maikkoenig.de> - 2015-08-12 22:29 +0200
Re: Schleife für document.getElementBy ... innerHTML? Sascha Hüdepohl <sascha@ravenworks.de> - 2015-08-12 09:33 +0200
Re: Schleife für document.getElementBy ... innerHTML? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-12 15:44 +0200
Re: Schleife für document.getElementBy ... innerHTML? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-12 15:47 +0200
Re: Schleife für document.getElementBy ... innerHTML? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-12 16:18 +0200
Re: Schleife für document.getElementBy ... innerHTML? Stefan Reuther <stefan.news@arcor.de> - 2015-08-12 19:18 +0200
Re: Schleife für document.getElementBy ... innerHTML? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-12 20:54 +0200
Re: Schleife für document.getElementBy ... innerHTML? Stefan Reuther <stefan.news@arcor.de> - 2015-08-13 20:09 +0200
Re: Schleife für document.getElementBy ... innerHTML? Maik Koenig <usenetspam@maikkoenig.de> - 2015-08-12 22:42 +0200
Re: Schleife für document.getElementBy ... innerHTML? Sascha Hüdepohl <sascha@ravenworks.de> - 2015-08-13 08:54 +0200
Re: Schleife für document.getElementBy ... innerHTML? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-13 12:35 +0200
Re: Schleife für document.getElementBy ... innerHTML? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-13 12:32 +0200
Re: Schleife für document.getElementBy ... innerHTML? Maik Koenig <usenetspam@maikkoenig.de> - 2015-08-13 22:50 +0200
Re: Schleife für document.getElementBy ... innerHTML? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2015-08-14 08:35 +0200
| From | Maik Koenig <usenetspam@maikkoenig.de> |
|---|---|
| Date | 2015-08-12 01:02 +0200 |
| Subject | Schleife für document.getElementBy ... innerHTML? |
| Message-ID | <mqe5us.4jk.1@mid.maikkoenig.de> |
Servus!
Ich muss vorweg schicken, dass ich bei JavaScript eher als Idiot
einzustufen bin, also bitte nicht zu sehr schlagen wenn die Antwort
offensichtlich ist :).
Problemstellung:
Ich habe ein JavaScript in dem u.A. reichlich Variablen a la "FooBar1",
"FooBar2" etc mit Inhalten befüllt werden. Die sollen jetzt ins Dokument
geschrieben werden und zwar dort wo die entsprechende ID innerhalb des
Dokuments auftaucht:
document.getElementById('FooBar1').innerHTML = FooBar1;
Das funktioniert natürlich so wie es soll, aber ich hatte gehofft es
gäbe eine einfachere Lösung statt das für jede Variable einzelnd
aufzuschreiben.
Wenn ich folgendes mache:
var xx = document.querySelectorAll('td.FooBar');
for (var i = 0; i < xx.length; i++) {....}
bekomme ich zwar alle entsprechenden Elemente, aber darin enthalten sind
natürlich nicht deren IDs. Gibt es eine Möglichkeit die IDs der mit
querySelectorAll erfassten HTML-Elemente zu erfahren und dann selbige
mit ihren Pendants aus dem Script zu füttern?
Ich dachte an sowas:
document.getElementByID(xx[i])innerHTML = xx[i];}
Aber mit dem was ich da oben veranstalte funktioniert das natürlich
nicht. Ideen? Oder besser noch: Ein Tritt in die richtige Stelle damit
ich selbst auf die Lösung kommen kann?
Danke im Vorraus!
Greetz,
MK
--
[toc] | [next] | [standalone]
| From | Maik Koenig <usenetspam@maikkoenig.de> |
|---|---|
| Date | 2015-08-12 01:07 +0200 |
| Message-ID | <mqe67u.4jk.1@mid.maikkoenig.de> |
| In reply to | #4689 |
Am 12.08.2015 um 01:02 schrieb Maik "Ingrid" Koenig:
> Wenn ich folgendes mache:
>
> var xx = document.querySelectorAll('td.FooBar');
> for (var i = 0; i < xx.length; i++) {....}
Da muss ich hinzufügen, das ALLE entsprechenden Elemente mit den
durchnummerierten IDs dieselbe Klasse haben (class="FooBar"). Nicht das
es da Missverständnisse gibt.
Greetz,
MK
--
blog.maikkoenig.de // Des Wahnsinns fette Beute.
[toc] | [prev] | [next] | [standalone]
| From | "Christoph M. Becker" <cmbecker69@arcor.de> |
|---|---|
| Date | 2015-08-12 01:34 +0200 |
| Message-ID | <mqe0pi$61t$1@solani.org> |
| In reply to | #4689 |
Am 12.08.2015 um 01:02 schrieb Maik Koenig:
> Wenn ich folgendes mache:
>
> var xx = document.querySelectorAll('td.FooBar');
> for (var i = 0; i < xx.length; i++) {....}
>
> bekomme ich zwar alle entsprechenden Elemente, aber darin enthalten sind
> natürlich nicht deren IDs. Gibt es eine Möglichkeit die IDs der mit
> querySelectorAll erfassten HTML-Elemente zu erfahren und dann selbige
> mit ihren Pendants aus dem Script zu füttern?
>
> Ich dachte an sowas:
>
> document.getElementByID(xx[i])innerHTML = xx[i];}
>
> Aber mit dem was ich da oben veranstalte funktioniert das natürlich
> nicht. Ideen? Oder besser noch: Ein Tritt in die richtige Stelle damit
> ich selbst auf die Lösung kommen kann?
Du kannst die ID des jeweiligen Elements in der Schleife per xx[i].id
abrufen. Reicht der Tritt? :)
--
Christoph M. Becker
[toc] | [prev] | [next] | [standalone]
| From | Maik Koenig <usenetspam@maikkoenig.de> |
|---|---|
| Date | 2015-08-12 22:29 +0200 |
| Message-ID | <mqghcl.5dc.1@mid.maikkoenig.de> |
| In reply to | #4691 |
Am 12.08.2015 um 01:34 schrieb Christoph M. Becker:
> Am 12.08.2015 um 01:02 schrieb Maik Koenig:
>
>> Wenn ich folgendes mache:
>>
>> var xx = document.querySelectorAll('td.FooBar');
>> for (var i = 0; i < xx.length; i++) {....}
>>
>> bekomme ich zwar alle entsprechenden Elemente, aber darin enthalten sind
>> natürlich nicht deren IDs. Gibt es eine Möglichkeit die IDs der mit
>> querySelectorAll erfassten HTML-Elemente zu erfahren und dann selbige
>> mit ihren Pendants aus dem Script zu füttern?
>>
>> Ich dachte an sowas:
>>
>> document.getElementByID(xx[i])innerHTML = xx[i];}
>>
>> Aber mit dem was ich da oben veranstalte funktioniert das natürlich
>> nicht. Ideen? Oder besser noch: Ein Tritt in die richtige Stelle damit
>> ich selbst auf die Lösung kommen kann?
>
> Du kannst die ID des jeweiligen Elements in der Schleife per xx[i].id
> abrufen. Reicht der Tritt? :)
Jein.
Jetzt bekomme ich zwar die IDs der Elemente, aber darüber nicht den
Inhalt der gleichnamigen Variablen. Hm...
Greetz,
MK
--
blog.maikkoenig.de // Des Wahnsinns fette Beute.
[toc] | [prev] | [next] | [standalone]
| From | Sascha Hüdepohl <sascha@ravenworks.de> |
|---|---|
| Date | 2015-08-12 09:33 +0200 |
| Message-ID | <20150812093317.00f07bc8@ravenworks.netz> |
| In reply to | #4689 |
Hallo!
Maik Koenig <usenetspam@maikkoenig.de> schrieb:
> Ich habe ein JavaScript in dem u.A. reichlich Variablen a la
> "FooBar1", "FooBar2" etc mit Inhalten befüllt werden. Die sollen
> jetzt ins Dokument geschrieben werden und zwar dort wo die
> entsprechende ID innerhalb des Dokuments auftaucht:
Das Problem dabei ist an die Namen der Variablen zu kommen.
Wenn Du die Variablen alle nach dem gleichen Schema benannt hast und
sie global sind, dann könnte folgendes funtionieren:
var target, i;
for (i = 0; i < 10; i += 1) {
if (window['FooBar' + i]) {
target = document.getElementById('FooBar' + i);
if (target) {
target.textContent = window['FooBar' + i];
}
}
}
Schöner fände ich es wenn die Variablen in einem Container
zusammengefasst sind:
var
i, target,
vars = {
fooBar1: 'wert 1',
fooBar2: 'wert 2',
andererName: 'wert 3'
};
for (i in vars) {
if (vars.hasOwnProperty(i)) {
target = document.getElementById(i);
if (target) {
target.textContent = = vars[i];
}
}
}
http://plnkr.co/edit/bJHVA6U6mg6ubFdkHR28?p=preview
HTH
Sascha
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2015-08-12 15:44 +0200 |
| Message-ID | <5808078.Mu2qdKNV6c@PointedEars.de> |
| In reply to | #4692 |
Sascha Hüdepohl wrote:
> Maik Koenig <usenetspam@maikkoenig.de> schrieb:
>> Ich habe ein JavaScript in dem u.A. reichlich Variablen a la
>> "FooBar1", "FooBar2" etc mit Inhalten befüllt werden. Die sollen
>> jetzt ins Dokument geschrieben werden und zwar dort wo die
>> entsprechende ID innerhalb des Dokuments auftaucht:
>
> Das Problem dabei ist an die Namen der Variablen zu kommen.
>
> Wenn Du die Variablen alle nach dem gleichen Schema benannt hast und
> sie global sind, dann könnte folgendes funtionieren:
>
> var target, i;
> for (i = 0; i < 10; i += 1) {
> if (window['FooBar' + i]) {
> target = document.getElementById('FooBar' + i);
> if (target) {
> target.textContent = window['FooBar' + i];
> […]
Nein, sondern
target.textContent = this['FooBar' + i];
bzw. im lokalen Kontext oder Node.js
target.textContent = global['FooBar' + i];
wobei man sich ohne Node.js das “global” mit
var global = this;
im globalen Kontext selbst bauen muss.
<Gebetsmühle>
window != global. Das mit “window” referenzierte Host-Objekt hat spezielle
Eigenschaften, die das in ECMAScript spezifizierte globale Objekt nicht hat.
Wer diese beiden Objekte verwechselt, muss sich nicht wundern, wenn Dinge
passieren, die er nicht möchte. Zum Beispiel wäre es bei diesem Ansatz
fatal, wenn eine der globalen Variablen “location” hiesse: eine Zuweisung an
die gleichnamige Eigenschaft von “window” löst eine Navigation aus.
</Gebetsmühle>
> Schöner fände ich es wenn die Variablen in einem Container
> zusammengefasst sind:
Das ist nicht nur eleganter, sondern auch weniger fehlerträchtig.
> var
> i, target,
> vars = {
> fooBar1: 'wert 1',
> fooBar2: 'wert 2',
> andererName: 'wert 3'
> };
>
> for (i in vars) {
> if (vars.hasOwnProperty(i)) {
> target = document.getElementById(i);
> if (target) {
> target.textContent = = vars[i];
^
| Uncaught SyntaxError: Unexpected token =
> }
> }
> }
Vermutlich effizienter:
Object.keys(vars).forEach(function (key) {
var target = document.getElementById(i);
if (target) target.textContent = this[key];
}, vars);
Oder
vars = Object.create(null, {
fooBar1: {value: 'wert 1', enumerable: true},
fooBar2: {value: 'wert 2', enumerable: true},
andererName: {value: 'wert 3', enumerable: true}
});
dann kann man sich das vars.hasOwnProperty(…) sparen, weil das referenzierte
Objekt keine Eigenschaften erbt.
Erfordert aber jeweils eine Implementierung/Emulation von ES 5+. Siehe auch
jsx.object.createDataObject() (zukünftig deprecated zugunsten von
jsx.object.createDataObject()) usw.
<http://PointedEars.de/wsvn/JSX/trunk/object.js>
Übrigens gibt es schon JS/ES-basierte Template-Engines.
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2015-08-12 15:47 +0200 |
| Message-ID | <2123967.kxT4jObxOY@PointedEars.de> |
| In reply to | #4693 |
Thomas 'PointedEars' Lahn wrote:
> Object.keys(vars).forEach(function (key) {
> var target = document.getElementById(i);
var target = document.getElementById(key);
> if (target) target.textContent = this[key];
> }, vars);
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2015-08-12 16:18 +0200 |
| Message-ID | <2218548.MvuZSXvuf9@PointedEars.de> |
| In reply to | #4693 |
Thomas 'Ingrid' Lahn wrote: > Erfordert aber jeweils eine Implementierung/Emulation von ES 5+. Siehe > auch jsx.object.createDataObject() (zukünftig deprecated zugunsten von > jsx.object.createDataObject()) usw. Ja, nee, is’ klar. Gemeint war: _jsx.object.getDataObject()_ soll zukünftig nicht mehr verwendet werden, weil es irgendwann durch jsx.object.createDataObject() ersetzt wird. getDataObject() bzw. createDataObject() ist eine Factory, kein Getter, und sollte entsprechend benannt sein. Ist das wieder heiss heute … > <http://PointedEars.de/wsvn/JSX/trunk/object.js> -- PointedEars FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/> Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix> Please do not cc me. / Bitte keine Kopien per E-Mail.
[toc] | [prev] | [next] | [standalone]
| From | Stefan Reuther <stefan.news@arcor.de> |
|---|---|
| Date | 2015-08-12 19:18 +0200 |
| Message-ID | <mqg66j.1bk.1@stefan.msgid.phost.de> |
| In reply to | #4693 |
Thomas 'PointedEars' Lahn wrote:
> Sascha Hüdepohl wrote:
>>var target, i;
>>for (i = 0; i < 10; i += 1) {
>> if (window['FooBar' + i]) {
>> target = document.getElementById('FooBar' + i);
>> if (target) {
>> target.textContent = window['FooBar' + i];
>>[…]
>
> Nein, sondern
>
> target.textContent = this['FooBar' + i];
[...]
> <Gebetsmühle>
>
> window != global. Das mit “window” referenzierte Host-Objekt hat spezielle
> Eigenschaften, die das in ECMAScript spezifizierte globale Objekt nicht hat.
> Wer diese beiden Objekte verwechselt, muss sich nicht wundern, wenn Dinge
> passieren, die er nicht möchte. Zum Beispiel wäre es bei diesem Ansatz
> fatal, wenn eine der globalen Variablen “location” hiesse: eine Zuweisung an
> die gleichnamige Eigenschaft von “window” löst eine Navigation aus.
Sofern wir in einem Browser sind, ist 'this === window'. Die Magie des
Objektes geht auch nicht weg, wenn man 'this' statt 'window' schreibt,
'this.location = "..."' löst ebenfalls eine Navigation aus.
>>Schöner fände ich es wenn die Variablen in einem Container
>>zusammengefasst sind:
>
> Das ist nicht nur eleganter, sondern auch weniger fehlerträchtig.
Eben. Das muss der Weg sein. Nicht darum herumzuworkarounden, wie man
denn das globale Objekt bezeichnet.
Stefan
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2015-08-12 20:54 +0200 |
| Message-ID | <2473063.o0E3eExaDO@PointedEars.de> |
| In reply to | #4697 |
Stefan Reuther wrote: > Thomas 'PointedEars' Lahn wrote: >> window != global. Das mit “window” referenzierte Host-Objekt hat >> spezielle Eigenschaften, die das in ECMAScript spezifizierte globale >> Objekt nicht hat. Wer diese beiden Objekte verwechselt, muss sich nicht >> wundern, wenn Dinge >> passieren, die er nicht möchte. Zum Beispiel wäre es bei diesem Ansatz >> fatal, wenn eine der globalen Variablen “location” hiesse: eine Zuweisung >> an die gleichnamige Eigenschaft von “window” löst eine Navigation aus. > > Sofern wir in einem Browser sind, ist 'this === window'. (Schon *oft* diskutiert und widerlegt. Bitte erst lesen, dann denken, dann posten.) Nein. Aufgrund der Frames-Semantik ist nur die Unterscheidung nicht trivial möglich. > Die Magie des Objektes geht auch nicht weg, wenn man 'this' statt 'window' > schreibt, 'this.location = "..."' löst ebenfalls eine Navigation aus. Die Aussage mag zwar kontextabhängig richtig sein (in der Console ist sie das beispielsweise nachweislich nicht), die Schlussfolgerung daraus aber ist falsch. Ein Objekt dient hier nur als Proxy für das andere, und als Sonderfall hat das eine Objekt (das globale) eine host-definierte Eigenschaft passenden Namens und Wertes (“window”). > >>Schöner fände ich es wenn die Variablen in einem Container > >>zusammengefasst sind: > > > > Das ist nicht nur eleganter, sondern auch weniger fehlerträchtig. > > Eben. Das muss der Weg sein. Nicht darum herumzuworkarounden, wie man > denn das globale Objekt bezeichnet. Was soll das? Es geht nicht um die Bezeichnung, sondern um die weniger fehlerträchtige Referenzierung. In *beiden* Fällen. -- PointedEars FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/> Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix> Please do not cc me. / Bitte keine Kopien per E-Mail.
[toc] | [prev] | [next] | [standalone]
| From | Stefan Reuther <stefan.news@arcor.de> |
|---|---|
| Date | 2015-08-13 20:09 +0200 |
| Message-ID | <mqitih.3u4.1@stefan.msgid.phost.de> |
| In reply to | #4698 |
Thomas 'PointedEars' Lahn wrote: > Stefan Reuther wrote: >>Thomas 'PointedEars' Lahn wrote: >>>window != global. Das mit “window” referenzierte Host-Objekt hat >>>spezielle Eigenschaften, die das in ECMAScript spezifizierte globale >>>Objekt nicht hat. Wer diese beiden Objekte verwechselt, muss sich nicht >>>wundern, wenn Dinge >>>passieren, die er nicht möchte. Zum Beispiel wäre es bei diesem Ansatz >>>fatal, wenn eine der globalen Variablen “location” hiesse: eine Zuweisung >>>an die gleichnamige Eigenschaft von “window” löst eine Navigation aus. >> >>Sofern wir in einem Browser sind, ist 'this === window'. > > (Schon *oft* diskutiert und widerlegt. Bitte erst lesen, dann denken, dann > posten.) Nein. Aufgrund der Frames-Semantik ist nur die Unterscheidung > nicht trivial möglich. Meine Browser antworten mir auf die Frage 'javascript:window===this' mit 'true'. Dass man das durch Instanziierung beliebig komplizierter Dokumente und ggf. darin enthaltener Skripte ändern kann, ist wenig überraschend. >>Die Magie des Objektes geht auch nicht weg, wenn man 'this' statt 'window' >>schreibt, 'this.location = "..."' löst ebenfalls eine Navigation aus. > > Die Aussage mag zwar kontextabhängig richtig sein (in der Console ist sie > das beispielsweise nachweislich nicht), die Schlussfolgerung daraus aber > ist falsch. Ein Objekt dient hier nur als Proxy für das andere, und als > Sonderfall hat das eine Objekt (das globale) eine host-definierte > Eigenschaft passenden Namens und Wertes (“window”). "Proxy". Ich hätte ja gesagt, 'this' ist wie 'window' eine Referenz auf ein bestimmtes Objekt, aber man kann natürlich auch neue Begriffe erfinden. Was nichts daran ändert, dass die Magie des 'window'-Objektes nicht, wie von dir suggeriert, weggeht, wenn man es als 'this' oder 'global' referenziert. Stefan
[toc] | [prev] | [next] | [standalone]
| From | Maik Koenig <usenetspam@maikkoenig.de> |
|---|---|
| Date | 2015-08-12 22:42 +0200 |
| Message-ID | <mqgi4r.ko.1@mid.maikkoenig.de> |
| In reply to | #4692 |
Am 12.08.2015 um 09:33 schrieb Sascha Hüdepohl:
> Hallo!
>
> Maik Koenig <usenetspam@maikkoenig.de> schrieb:
>
>> Ich habe ein JavaScript in dem u.A. reichlich Variablen a la
>> "FooBar1", "FooBar2" etc mit Inhalten befüllt werden. Die sollen
>> jetzt ins Dokument geschrieben werden und zwar dort wo die
>> entsprechende ID innerhalb des Dokuments auftaucht:
>
> Das Problem dabei ist an die Namen der Variablen zu kommen.
>
> Wenn Du die Variablen alle nach dem gleichen Schema benannt hast und
> sie global sind, dann könnte folgendes funtionieren:
>
> var target, i;
> for (i = 0; i < 10; i += 1) {
> if (window['FooBar' + i]) {
> target = document.getElementById('FooBar' + i);
> if (target) {
> target.textContent = window['FooBar' + i];
> }
> }
> }
Perfekt, das klappt, Danke!
Greetz,
MK
--
blog.maikkoenig.de // Des Wahnsinns fette Beute.
[toc] | [prev] | [next] | [standalone]
| From | Sascha Hüdepohl <sascha@ravenworks.de> |
|---|---|
| Date | 2015-08-13 08:54 +0200 |
| Message-ID | <20150813085440.71efb779@ravenworks.netz> |
| In reply to | #4699 |
Maik Koenig <usenetspam@maikkoenig.de> schrieb:
> Am 12.08.2015 um 09:33 schrieb Sascha Hüdepohl:
> > var target, i;
> > for (i = 0; i < 10; i += 1) {
> > if (window['FooBar' + i]) {
> > target = document.getElementById('FooBar' + i);
> > if (target) {
> > target.textContent = window['FooBar' + i];
> > }
> > }
> > }
>
> Perfekt, das klappt, Danke!
Jetz schäm ich mich ein bischen
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2015-08-13 12:35 +0200 |
| Message-ID | <1908815.vMXFiGW345@PointedEars.de> |
| In reply to | #4701 |
Sascha Hüdepohl wrote:
> Maik Koenig <usenetspam@maikkoenig.de> schrieb:
>> Am 12.08.2015 um 09:33 schrieb Sascha Hüdepohl:
>> > var target, i;
>> > for (i = 0; i < 10; i += 1) {
>> > if (window['FooBar' + i]) {
>> > target = document.getElementById('FooBar' + i);
>> > if (target) {
>> > target.textContent = window['FooBar' + i];
>> > }
>> > }
>> > }
>>
>> Perfekt, das klappt, Danke!
>
> Jetz schäm ich mich ein bischen
Schlecht oder gar nicht getestete fehlerträchtige Schnellschüsse, die von
Anfängern als „perfekt“ bezeichnet werden, sind etwas, für das man sich
nicht nur ein bisschen schämen sollte.
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2015-08-13 12:32 +0200 |
| Message-ID | <95996164.TSO6ZjPLRg@PointedEars.de> |
| In reply to | #4699 |
Maik Koenig wrote:
> Am 12.08.2015 um 09:33 schrieb Sascha Hüdepohl:
>> Maik Koenig <usenetspam@maikkoenig.de> schrieb:
>>> Ich habe ein JavaScript in dem u.A. reichlich Variablen a la
>>> "FooBar1", "FooBar2" etc mit Inhalten befüllt werden. Die sollen
>>> jetzt ins Dokument geschrieben werden und zwar dort wo die
>>> entsprechende ID innerhalb des Dokuments auftaucht:
>>
>> Das Problem dabei ist an die Namen der Variablen zu kommen.
>>
>> Wenn Du die Variablen alle nach dem gleichen Schema benannt hast und
>> sie global sind, dann könnte folgendes funtionieren:
>>
>> var target, i;
>> for (i = 0; i < 10; i += 1) {
>> if (window['FooBar' + i]) {
>> target = document.getElementById('FooBar' + i);
>> if (target) {
>> target.textContent = window['FooBar' + i];
>> }
>> }
>> }
>
> Perfekt, das klappt, Danke!
Abgesehen von der bereits erwähnten Fehlerträchtigkeit aufgrund der
Besonderheiten von “window” (unter anderem darf keine Variable so wie eine
Eigenschaft von “window” heissen – das schliesst auch IDs und -Namen ein)
klappt das genau so lange, wie der Variablenwert nicht zu “false”
konvertiert wird, also nicht undefined, null, false, 0, NaN oder "" ist:
<http://ecma-international.org/ecma-262/5.1/#sec-9.2>
„Perfekt“ ist daher etwas anderes.
Und wie gesagt: Du erfindest hier das Rad schlechter neu.
PointedEars
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.
[toc] | [prev] | [next] | [standalone]
| From | Maik Koenig <usenetspam@maikkoenig.de> |
|---|---|
| Date | 2015-08-13 22:50 +0200 |
| Message-ID | <mqj6vi.7nk.1@mid.maikkoenig.de> |
| In reply to | #4702 |
Am 13.08.2015 um 12:32 schrieb Thomas 'PointedEars' Lahn:
> Maik Koenig wrote:
>
>> Am 12.08.2015 um 09:33 schrieb Sascha Hüdepohl:
>>> Maik Koenig <usenetspam@maikkoenig.de> schrieb:
>>>> Ich habe ein JavaScript in dem u.A. reichlich Variablen a la
>>>> "FooBar1", "FooBar2" etc mit Inhalten befüllt werden. Die sollen
>>>> jetzt ins Dokument geschrieben werden und zwar dort wo die
>>>> entsprechende ID innerhalb des Dokuments auftaucht:
>>>
>>> Das Problem dabei ist an die Namen der Variablen zu kommen.
>>>
>>> Wenn Du die Variablen alle nach dem gleichen Schema benannt hast und
>>> sie global sind, dann könnte folgendes funtionieren:
>>>
>>> var target, i;
>>> for (i = 0; i < 10; i += 1) {
>>> if (window['FooBar' + i]) {
>>> target = document.getElementById('FooBar' + i);
>>> if (target) {
>>> target.textContent = window['FooBar' + i];
>>> }
>>> }
>>> }
>>
>> Perfekt, das klappt, Danke!
>
> Abgesehen von der bereits erwähnten Fehlerträchtigkeit aufgrund der
> Besonderheiten von “window” (unter anderem darf keine Variable so wie eine
> Eigenschaft von “window” heissen – das schliesst auch IDs und -Namen ein)
Also die Namen der Variablen schliessen das praktisch aus.
> klappt das genau so lange, wie der Variablenwert nicht zu “false”
> konvertiert wird, also nicht undefined, null, false, 0, NaN oder "" ist:
Das muss ich vorab ohnehin abfangen, da die Variablenwerte nachfolgend
für Berechnungen benutzt werden sollen. Und "NaN" und ähnliches wäre als
Ergebnis sehr irritierend.
> „Perfekt“ ist daher etwas anderes.
Man kann Haare spalten, ja. Muss man aber nicht wenn man es nicht braucht.
> Und wie gesagt: Du erfindest hier das Rad schlechter neu.
Es tut was es soll, es dreht sich ohne Ruckler.
Greetz,
MK
--
blog.maikkoenig.de // Des Wahnsinns fette Beute.
[toc] | [prev] | [next] | [standalone]
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Date | 2015-08-14 08:35 +0200 |
| Message-ID | <3685711.G1Gi30AsMo@PointedEars.de> |
| In reply to | #4705 |
Maik Koenig wrote: > Am 13.08.2015 um 12:32 schrieb Thomas 'PointedEars' Lahn: >> Abgesehen von der bereits erwähnten Fehlerträchtigkeit aufgrund der >> Besonderheiten von “window” (unter anderem darf keine Variable so wie >> eine Eigenschaft von “window” heissen – das schliesst auch IDs und -Namen >> ein) > > Also die Namen der Variablen schliessen das praktisch aus. Du weisst nie, welche Eigenschaften das mit “window” referenzierte Host-Objekt hat und was eine Zuweisung an sie bewirkt. Manche Leute werden erst durch Schaden klug. -- PointedEars FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/> Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix> Please do not cc me. / Bitte keine Kopien per E-Mail.
[toc] | [prev] | [standalone]
Back to top | Article view | de.comp.lang.javascript
csiph-web