tag:forum.selfhtml.org,2005:/self
Javascript Objekt ansprechen – SELFHTML-Forum
2015-12-03T19:08:54Z
https://forum.selfhtml.org/self/2015/dec/1/javascript-objekt-ansprechen/1656107#m1656107
hawkmaster1
2015-12-01T13:48:54Z
2015-12-01T13:48:54Z
Javascript Objekt ansprechen
<p>Hallo zusammen,</p>
<p>ich tue mich ein wenig schwer mit unten stehenden JS code.
Ich würde gerne wenn die Funktion "startScan()" aufgerufen wird den Inhalt von
"destinationKind" herausbekommen.
Wie ihr seht habe ich versucht dies mit
var test = scanOptions.jobSetting.destinationSetting.addressbookDestinationSetting.destinationKind;</p>
<p>Die Struktur und die JS Objekte verstehe ich nicht ganz.
Ich schreibe mal hinter die jeweiligen Zeilen einen Kommentar so wie ich es verstehe.</p>
<pre><code class="block language-js"><span class="token keyword">function</span> <span class="token function">startScan</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">var</span> scanOptions <span class="token operator">=</span> <span class="token function">createOptions</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span><span class="token comment">//Hier wird die Variable scanOptions gefüllt durch die Funktion createOptions()</span>
time <span class="token operator">=</span> <span class="token punctuation">(</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getTime</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
upnum <span class="token operator">=</span> <span class="token number">0</span><span class="token punctuation">,</span>
scannedCount<span class="token punctuation">,</span> filename<span class="token punctuation">,</span> reqbody<span class="token punctuation">,</span> reqId<span class="token punctuation">,</span> splitdata<span class="token punctuation">,</span> uploadOptions<span class="token punctuation">,</span> folder<span class="token punctuation">,</span> reqServer<span class="token punctuation">;</span>
<span class="token operator">...</span><span class="token punctuation">.</span>
<span class="token keyword">var</span> test <span class="token operator">=</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting<span class="token punctuation">.</span>addressbookDestinationSetting<span class="token punctuation">.</span>destinationKind<span class="token punctuation">;</span>
<span class="token function">alert</span><span class="token punctuation">(</span><span class="token string">'die DESTINATION ist '</span> <span class="token operator">+</span> test<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">function</span> <span class="token function">createOptions</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">var</span> color <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span> <span class="token string">'input[name="color"]:checked'</span> <span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">val</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
destination <span class="token operator">=</span> <span class="token function">$</span><span class="token punctuation">(</span> <span class="token string">'input[name="destination"]:checked'</span> <span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">val</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">,</span>
scanOptions <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token string-property property">"jobSetting"</span><span class="token operator">:</span><span class="token punctuation">{</span>
<span class="token string-property property">"scanDevice"</span><span class="token operator">:</span> <span class="token string">"auto"</span><span class="token punctuation">,</span>
<span class="token string-property property">"originalSide"</span><span class="token operator">:</span> originalSide<span class="token punctuation">,</span>
<span class="token string-property property">"scanResolution"</span><span class="token operator">:</span> resolution<span class="token punctuation">,</span>
<span class="token string-property property">"scanColor"</span><span class="token operator">:</span> color<span class="token punctuation">,</span>
<span class="token string-property property">"fileSetting"</span><span class="token operator">:</span> <span class="token punctuation">{</span><span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
email<span class="token punctuation">,</span>destinationSetting<span class="token punctuation">;</span>
<span class="token comment">//Hier wird doch vermutlich die variable "destinationSetting" initialisiert </span>
<span class="token operator">...</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> destination <span class="token operator">===</span> <span class="token string">"folder"</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span>
scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>jobMode <span class="token operator">=</span> <span class="token string">"scan"</span><span class="token punctuation">;</span>
scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span>
<span class="token string-property property">"destinationType"</span><span class="token operator">:</span> <span class="token string">"book"</span><span class="token punctuation">,</span>
<span class="token string-property property">"addressbookDestinationSetting"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token string-property property">"destinationKind"</span><span class="token operator">:</span> <span class="token string">"folder"</span><span class="token punctuation">,</span>
<span class="token string-property property">"entryId"</span><span class="token operator">:</span> <span class="token function">$</span><span class="token punctuation">(</span> <span class="token string">'input[name="folder"]:checked'</span> <span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">val</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token punctuation">]</span><span class="token punctuation">;</span>
scanOptions<span class="token punctuation">.</span>jobSetting <span class="token operator">=</span> <span class="token function">createJobSetting</span><span class="token punctuation">(</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">,</span> capability <span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span><span class="token punctuation">(</span> scanOptions <span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//Return wert als Objekt</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Mich würde also interessieren wie man später bei "startScan()" die Inhalte von "destinationKind" oder "entryId" bekommt?</p>
<p>vielen Dank
viele Grüße
hawk</p>
https://forum.selfhtml.org/self/2015/dec/1/javascript-objekt-ansprechen/1656114#m1656114
unknown
2015-12-01T14:34:39Z
2015-12-01T14:34:39Z
Javascript Objekt ansprechen
<blockquote>
<p>Wie ihr seht habe ich versucht dies mit
var test = scanOptions.jobSetting.destinationSetting.addressbookDestinationSetting.destinationKind;</p>
</blockquote>
<p>destinationSetting ist ein Array:</p>
<blockquote>
<pre><code> scanOptions.jobSetting.destinationSetting = [ {
</code></pre>
</blockquote>
<p>was vermutlich nicht mal vorhanden sein mus. Du musst also dann prüfen ob destinationSetting überhaupt existiert, ob es ein Array ist und wieviele Arrayelemente vorhanden sind. Dann musst du noch wissen, auf welches (vielleicht auch alle) Element du zugreifen musst.</p>
https://forum.selfhtml.org/self/2015/dec/1/javascript-objekt-ansprechen/1656115#m1656115
hawkmaster1
2015-12-01T14:40:12Z
2015-12-01T14:40:12Z
Javascript Objekt ansprechen
<p>Hallo,</p>
<blockquote>
<p>destinationSetting ist ein Array:</p>
</blockquote>
<p>ja ok, aber angenommen es ist befüllt wie spricht man dann den Inhalt an ?
Also z.b. entryID ?</p>
<p>Gruss</p>
https://forum.selfhtml.org/self/2015/dec/1/javascript-objekt-ansprechen/1656124#m1656124
Felix Riesterer
http://felix-riesterer.de
2015-12-01T16:38:17Z
2015-12-03T10:28:57Z
Javascript Objekt ansprechen
<p>Liebe(r) hawkmaster1,</p>
<blockquote>
<p>Hallo,</p>
<blockquote>
<p>destinationSetting ist ein Array:</p>
<blockquote>
<pre><code> scanOptions.jobSetting.destinationSetting = [ {
</code></pre>
</blockquote>
</blockquote>
<p>ja ok, aber angenommen es ist befüllt wie spricht man dann den Inhalt an ?
Also z.b. entryID ?</p>
</blockquote>
<p>dieses Array, wenn es vorhanden ist, enthält laut Deinem Code genau ein Objekt:</p>
<blockquote>
<pre><code class="block language-js"> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span>
<span class="token string-property property">"destinationType"</span><span class="token operator">:</span> <span class="token string">"book"</span><span class="token punctuation">,</span>
<span class="token string-property property">"addressbookDestinationSetting"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token string-property property">"destinationKind"</span><span class="token operator">:</span> <span class="token string">"folder"</span><span class="token punctuation">,</span>
<span class="token string-property property">"entryId"</span><span class="token operator">:</span> <span class="token function">$</span><span class="token punctuation">(</span> <span class="token string">'input[name="folder"]:checked'</span> <span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">val</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span> <span class="token punctuation">]</span><span class="token punctuation">;</span>
</code></pre>
</blockquote>
<p>Dieses Objekt kann als erstes Array-Element so erreicht werden:</p>
<pre><code class="block language-javascript"><span class="token keyword">if</span> <span class="token punctuation">(</span>scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting instance <span class="token keyword">of</span> Array
<span class="token operator">&&</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// ...</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Obiger Code prüft, ob scanOptions.jobSetting.destinationSetting tatsächlich ein Array ist, und ob das Array mindestens ein Element enthält.</p>
<p>Nun kann man das Objekt mit dem Array-Index 0 ansprechen:</p>
<pre><code class="block language-javascript"><span class="token keyword">if</span> <span class="token punctuation">(</span>scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting instance <span class="token keyword">of</span> Array
<span class="token operator">&&</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">var</span> dS <span class="token operator">=</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
console<span class="token punctuation">.</span><span class="token function">dir</span><span class="token punctuation">(</span>dS<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// debug-Ausgabe der Objektstruktur auf der JS-Konsole des Browsers</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Da in Deinem Code die Objekt-Struktur genau eine Eigenschaft "destinationType" mit String-Wert und eine Eigenschaft "addressbookDestinationSetting" mit Objekt-Wert kennt, kannst Du diese nun direkt ansprechen:</p>
<pre><code class="block language-javascript"><span class="token keyword">if</span> <span class="token punctuation">(</span>scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting instance <span class="token keyword">of</span> Array
<span class="token operator">&&</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// short form for easier reading</span>
<span class="token keyword">var</span> dS <span class="token operator">=</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting<span class="token punctuation">[</span><span class="token number">0</span><span class="token punctuation">]</span><span class="token punctuation">;</span>
<span class="token comment">// dS.destinationType (string)</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"destinationType: "</span> <span class="token operator">+</span> dS<span class="token punctuation">.</span>destinationType<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// dS.addressbookDestinationSetting (object)</span>
console<span class="token punctuation">.</span><span class="token function">dir</span><span class="token punctuation">(</span>dS<span class="token punctuation">.</span>addressbookDestinationSetting<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// properties of dS.addressbookDestinationSetting</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"destinationKind: "</span> <span class="token operator">+</span> dS<span class="token punctuation">.</span>addressbookDestinationSetting<span class="token punctuation">.</span>destinationKind<span class="token punctuation">)</span><span class="token punctuation">;</span>
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"entryId: "</span> <span class="token operator">+</span> dS<span class="token punctuation">.</span>addressbookDestinationSetting<span class="token punctuation">.</span>entryId<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Liebe Grüße,</p>
<p>Felix Riesterer.</p>
https://forum.selfhtml.org/self/2015/dec/1/javascript-objekt-ansprechen/1656246#m1656246
hawkmaster1
2015-12-03T10:28:39Z
2015-12-03T10:28:39Z
Danke
<p>Lieber Felix,</p>
<p>ganz herzlichen Dank für deine Mühe und für die tolle Erklärung.
Jetzt ist mir das mit den Eigenschaften und Objekten ein wenig verständlicher geworden :-)</p>
<p>Gruss
hawk</p>
https://forum.selfhtml.org/self/2015/dec/1/javascript-objekt-ansprechen/1656321#m1656321
Felix Riesterer
http://felix-riesterer.de
2015-12-03T19:08:54Z
2015-12-03T19:08:54Z
instanceof - nicht "instance of"
<p>Mein lieber Felix,</p>
<p>also was verzapfst Du denn da für einen Quark?!</p>
<blockquote>
<p>if (scanOptions.jobSetting.destinationSetting instance of Array</p>
</blockquote>
<p>der Operator heißt "instanceof", und zwar ohne Leerzeichen!</p>
<pre><code class="block language-javascript"><span class="token keyword">if</span> <span class="token punctuation">(</span>scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting <span class="token keyword">instanceof</span> <span class="token class-name">Array</span>
<span class="token operator">&&</span> scanOptions<span class="token punctuation">.</span>jobSetting<span class="token punctuation">.</span>destinationSetting<span class="token punctuation">.</span>length <span class="token operator">></span> <span class="token number">0</span>
<span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// weiter geht's</span>
<span class="token punctuation">}</span>
</code></pre>
<p>Jetzt sieht der Operator auch farblich anders aus. So ist es also richtig.</p>
<p>Liebe Grüße,</p>
<p>Felix Riesterer.</p>