2016-07-11 9 views
0

Ich habe eine Eingabe innerhalb eines Iframes, das ich nach dem Laden der Seite in einen vorgeladenen Wert einfügen möchte.Iframe-Eingabe hat nicht abgefangen TypeError: Eigenschaft 'Wert' von Null kann nicht gesetzt werden

<script> 
    jQuery('iframe').load(function(){ 
      jQuery('iframe').contents().find('input#ysi_subject').bind('change',function(e)  { 
      var title_name = "DO I LOOK LIKE I'M WORKING?"; 
      jQuery('input#ysi_subject').val(title_name); 
     }); 
    }); 
</script> 

aber wenn ich an dem Konsolenprotokoll aussehen, bekomme ich diesen Fehler: Ich habe bisher in diesem Code zu setzen Uncaught Typeerror: Kann nicht gesetzt Eigenschaft ‚Wert‘ von null

Kann mich jemand helfen erklären, warum es die Eingabe nicht fängt?

+0

Wahrscheinlich aufgrund des Umfangs, führt es die Methode noch im übergeordneten Dokument wäre meine Vermutung. Sehen Sie, ob '$ (this) .val (...)' funktioniert, – CBroe

Antwort

1

Dies ist, weil Sie versuchen, auf das DOM zuzugreifen, bevor die DOM-Elemente tatsächlich geladen werden, so dass alle Verweise auf das DOM in diesem Fall null ausgeben. Platzieren Sie den Code in einem $(document).ready() Handler, um diese an die Arbeit:

... <!-- jQuery reference --> 
<script> 
    $(document).ready(function() { 
     // your code that you are trying to run 
    }); 
</script> 

* Beachten Sie, dass ich es vereinfacht nach unten zu zeigen, was ich wirklich reden.

0

Das Änderungsereignis wird vom iframe zurück zum übergeordneten Fenster ausgelöst. $ ("input # si_subject") existiert nicht im Elternfenster.

jQuery('iframe').load(function(){ 
     jQuery('iframe').contents().find('input#ysi_subject').bind('change',function(e)  { 
     var title_name = "DO I LOOK LIKE I'M WORKING?"; 
     // this would work    
     jQuery('iframe').contents().find('input#ysi_subject').val(title_name); 
     // this is better 
     $(this).val(title_name); 
     }); 
    });