2016-07-27 5 views
0

Ich habe eine HTML-Seiten der Login und Homepage. Ich habe eine Bedingung beim Einloggen eines Benutzers. Beispiel ist, wenn er/sie sich mit temporärem Passwort anmeldet die URL der Umleitung Seite sein wird home.html?change=yes#focuschange Dann auf meiner Homepage, wenn die URL == "yes", wird es die anderen Div-IDs (Home-Wrapper) verstecken. Zeigen Sie dann die focuschange Div-ID. Und sollte zu der besagten Div-ID gescrollt werden. Aber nach dem Laden der Homepage verstecken Sie einfach andere Div und zeigen Sie die focuschange div aber nicht scrollen zu ihm. Es wird nur am unteren Rand angezeigt. Wenn ich die Seite neu lade, scrollt sie nun wie gewünscht. Warum das? Ich versuchte mit scrollIntoView() und animate scrollTop aber das gleiche Problem.Scrolling Seite ID, wenn Div-ID nur aus dem Display angezeigt wird: keine zur Anzeige: Block

Die Struktur meiner html ist wie folgt:

<div class="page-content"> 
    <div class="content-block"> 
     <div id="home-wrapper"></div> //this will hide upon page load (by default it will show) 
     <div id="profile-wrapper"> // this will show upon page load (by default it will hide) 
      <div id="info"></div> 
      <div id="focuschange"> 
       <form></form> 
      </div> 
     </div> 
    </div> 
</div> 

Und das ist meine jQuery-Funktion auf Homepage:

function GetURLParameter(sParam){ 
       var sPageURL = window.location.search.substring(1); 
       var sURLVariables = sPageURL.split('&'); 
       for (var i = 0; i < sURLVariables.length; i++) 
       { 
        var sParameterName = sURLVariables[i].split('='); 
        if (sParameterName[0] == sParam) 
        { 
         return sParameterName[1]; 
        } 
       } 

      } 

      var urlvar = GetURLParameter('change'); 
      if (urlvar == 'yes'){ 

       $('#home-wrapper').hide(); 
       $('#profile-wrapper').show(); 

       setTimeout(function(){ 
       $("#newpass").focus(); 
       }, 200); 
      } 

Gibt es ein Problem, ein div id Scrollen, wenn es nur Displays nach dem Laden der Seite?

Was sollte der Ansatz in diesem Szenario sein?

+0

Ich kann Missverständnis, was das Problem ist, aber es sieht aus wie Sie versuchen, „Anker“ zu verwenden, um mit Hashes, um ein weiches Scrollen zu erreichen. Ist das der Fall? – Piercey4

+0

@ Piercey4 Ja, ich möchte nur die Seite zu der ID auf meiner URL scrollen, die '# focuschange' ist. –

Antwort

0

möchten Sie vielleicht Ihre Zeile ändern, die ist;

var urlvar = GetURLParameter('changepassword'); 

zu

var urlvar = GetURLParameter('change'); 
+0

Sorry, ich habe die falsche Variable kopiert. Ich aktualisiere meinen Beitrag. –

0

Da Sie bereits verwenden jquery Sie jquery verwenden können, das Buch zu führen.

Hier ist ein css-tricks Link, der genau auf Link Klicks automatisch funktioniert. https://css-tricks.com/snippets/jquery/smooth-scrolling/

Wenn alles, was Sie dazu brauchen, beim Laden der Seite geschehen ist, dann können Sie tun:

$('html, body').animate({ 
    scrollTop: $('#focuschange').offset().top 
}, 1000); 
+0

Ich habe es schon versucht, es funktioniert nur, wenn ich die Seite neu lade. Ich denke das vielleicht, weil es nur das Vorher-verstecken-div-id zeigt? Was denken Sie? –

+0

Haben Sie den scrollenden Teil in einem $ (Dokument) .ready (function() {}) verpackt ?? Es scheint, dass Sie versuchen, zu einem Element zu scrollen, das noch nicht im DOM ist ... – user1555320

Verwandte Themen