2015-05-16 10 views
12

Mam problem z jakimś odziedziczonym kodem - jest to aplikacja ścienna przypominająca FB, w której zarejestrowani użytkownicy mogą publikować tematy. Dużo kodu to JS i jQuery i niewiele o tym wiem.Nie można wykonać 'getComputedStyle' w 'oknie': parametr 1 nie jest typu "Błąd elementu"

Kiedy zamieszczając wątek wątek zostaje dodany do bazy danych, ale na ekranie nie pojawi się temat, dopóki nie zostanie odświeżona ale powinien pokazać natychmiast - gdy patrzę w narzędziach dla programistów pojawia się błąd:

Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'. 

Kiedy poszerzyć ten błąd pojawia się:

curCSS @ jquery-1.8.3.js:6825 
jQuery.extend.css @ jquery-1.8.3.js:6782 
isHidden @ jquery-1.8.3.js:6587 
defaultPrefilter @ jquery-1.8.3.js:8797 
Animation @ jquery-1.8.3.js:8697 
doAnimation @ jquery-1.8.3.js:9034 
jQuery.extend.dequeue @ jquery-1.8.3.js:1895 
(anonymous function) @ jquery-1.8.3.js:1938 
jQuery.extend.each @ jquery-1.8.3.js:611 
jQuery.fn.jQuery.each @ jquery-1.8.3.js:241 
jQuery.fn.extend.queue @ jquery-1.8.3.js:1931 
jQuery.fn.extend.animate @ jquery-1.8.3.js:9044 
jQuery.fn.(anonymous function) @ jquery-1.8.3.js:9129 
(anonymous function) @ script.js:52 
fire @ jquery-1.8.3.js:974 
self.fireWith @ jquery-1.8.3.js:1084 
done @ jquery-1.8.3.js:7803 
callback @ jquery-1.8.3.js:8518 

Linia 52 w script.js jest:

$('#loadpage').prepend($(response).fadeIn('slow')); 

Mam nadzieję, że to nie jest coś naprawione w jQuery 1.9.x i wyżej jako uaktualnienie zbyt wielu rzeczy w tej chwili, aby zrobić to opłacalne, ale nie mam pojęcia, od czego zacząć rozwiązywanie tego problemu

Znalazłem trzy pytania z ten sam błąd, ale nie był w stanie uzyskać żadnych pomysłów z odpowiedzi prawdopodobnie ze względu na mylack wiedzy JS.

Osiągnąłem pewien postęp - zaktualizowałem jquery 1.9.1 i tym razem tak się stało, ale błąd się zmienił. Tym razem stało się błąd:

Uncaught TypeError: Cannot set property 'cur' of undefined 

wskazując na tej samej linii w script.js

Szybkie wyszukiwanie znalezionego Uncaught TypeError with fadeIn in jQuery 1.9 który zalecany zmieniając linię:

$('#loadpage').prepend($(response).fadeIn('slow')); 

do:

$('#loadpage').prepend($(response).show()); 

Kiedy to zrobię, nie ma już żadnych błędów, ale nadal nie jest to działa poprawnie - po zaksięgowaniu nowego posta dodano nowy wpis, ale jest on duplikatem poprzedniego postu. Tak na przykład,

Post 1 
Post 2 
Post 3 

Gdybym umieścić nowy wpis o nazwie Post 4 następnie wyświetla jako:

Post 1 
Post 1 
Post 2 
Post 3 

Kiedy odświeżyć to wtedy pokazuje poprawnie Post 4 etc więc czuje się jak jakieś postępy, ale nadal nie całkiem tam

Response jest zdefiniowana w:

$('#post').click(function(){ 
     var a = $("#wm").val(); 
     if(a != "") 
     { 
      var keepID = $('#keepID').val(); 
      var posted_on = $('#posted_on').val(); 

      $.post("wall.php?value="+a+'&x='+keepID+'&p='+posted_on, { 
      }, function(response){ 
       //console.log(response);   

       //$('#load').prepend($(response).fadeIn('slow')); 
       $('#load').prepend($(response).show()); 
       $("#wm").val(""); 
      }); 
     } 


    }); 

ten skrypt jest fricking ho Wspaniale!

+1

numery linii byłaby bardziej przydatna, jeśli używany [unquified jQuery] (http: // kod.jquery.com/jquery-1.8.3.js). – Oriol

+0

Doskonały punkt, posortuję to teraz - dziękuję – bhttoan

+0

Możesz ustawić punkt przerwania tam i sprawdzić wartość 'odpowiedzi'? – ray

Odpowiedz

1

Prawdopodobnie będziesz musiał wstawić element przed jego wyświetleniem. Spróbuj tego:

$('#post').click(function(){ 
    var a = $("#wm").val(); 
    if(a != "") 
    { 
     var keepID = $('#keepID').val(); 
     var posted_on = $('#posted_on').val(); 

     $.post("wall.php?value="+a+'&x='+keepID+'&p='+posted_on, { 
     }, function(response){ 
      $(response).prependTo($('#load')).fadeIn('slow'); 
      $("#wm").val(""); 
     }); 
    } 
}); 

Jeśli to nie zadziała, to musi być błąd w skrypcie php lub w GET params są przechodzącą

Powiązane problemy