2016-05-23 12 views
1

Ich versuche, eine Variable gleich dem Wert des Namens eines Formulars im folgenden HTML zu setzen.Wie setze ich eine Variable gleich dem Wert eines Attributs innerhalb eines Kindelements?

<div id="someid"> 
    <form name="somename"> 
    </form> 
</div> 

Hier habe ich versucht, var x gleich den Namen des Formulars zu setzen, aber ich glaube nicht, dass ich darüber richtig werde.

$(document).ready(function(){ 
    if($("#someid").length > 0){ 
     var x = $($("#someid").children("form")).attr("name"); 
     if(x !== undefined){ 
      alert(pkmnId); 
     } 
    } 
}); 
+0

_ "aber ich denke nicht, dass ich das richtig mache" _ was lässt dich das denken? Wird Ihre 'alert (pkmnId)' Zeile nicht ausgelöst? Außerdem können Sie 'x' nicht außerhalb Ihres Bereit-Rückrufs verwenden, da es sich um eine lokale Variable handelt (falls Sie das versuchen) –

+0

Was ist das Problem, das Sie bekommen? – Sravan

+0

Meine Warnung wird nicht ausgelöst, aber ich habe seit dem eine Web-Seite mit äquivalenter HTML-Seite eingerichtet und es funktioniert dort, also glaube ich, das Problem falsch identifiziert zu haben. Danke trotzdem für die Hilfe. – Snubagaff

Antwort

0

Der einzige Problem mit dieser Linie

var x = $($("#someid").children("form")).attr("name"); 

ist, dass Sie ein jQuery-Objekt mit dem jquery Verfahren sind vorbei, wo entweder ein DOM-Element erwartet wird, oder ein Wähler erwartet wird.

Änderung ist zu

var x = $("#someid").children("form").attr("name"); //observe removing extra $ from the beginning. 
+0

jQuery ermöglicht die Übergabe eines anderen jQuery-Objekts. Es ist einfach nicht notwendig, da nur ein neues jQuery-Objekt zurückgegeben wird, das dieselbe Sammlung darstellt. Beide Zeilen sind gleich –

+0

@PatrickEvans überprüfen Sie bitte jquery doc hier http://api.jquery.com/jquery/, keiner der Konstruktoren nimmt jquery Objekt als Parameter. – gurvinder372

+0

Eigentlich tut es, es ist der fünfte Link: [jQuery (Auswahl)] (http://api.jquery.com/jquery/#jQuery-selection). Auch wenn Sie adventrous sind, können Sie ihren Code ansehen: in [jQuery.fn.init] (https://github.com/jquery/jquery/blob/master/src/core/init.js#L20), ein jQuery Objekt würde alle If-Anweisungen fehlschlagen, und die Funktion würde dann einfach 'jQuery.makeArray (selector, this) zurückgeben' Sie könnten dann alle Aufrufe durchgehen und sehen, was es letztendlich zurückgibt, ist ein geklontes jQuery-Objekt. –

1

mehr Vorteile Ihrer Selektoren Nehmen

$("#someid form").attr("name") 
0

Hier ist ein funktionierendes Beispiel nur mit Hilfe von Javascript

<div id="someid"> 
    <form name="somename"> 
    </form> 
</div> 


<script> 
    var x = document.getElementById("someid").children; 
    console.log(x[0].name); 

</script> 

Sie werden immer somename in der Konsole, speichern Sie es in einer Variablen

var _y = x[0].name; 
+0

Dies funktioniert nicht, wenn das div andere Elemente als das Formular enthält (was zu sein scheint wahrscheinlich). – mdickin

+0

'Wert des Namens eines Formulars in der folgenden HTML.' Dies ist die Frage. Er spricht über dieses spezielle Problem. Übrigens hast du Recht. – viveksinghggits

+0

Stimmt, aber gegeben 'someid' und 'somename', nahm ich an, dass es ein trivialisiertes Beispiel war. – mdickin

Verwandte Themen