Javascript 页面加载后使用JQuery滚动到DIV不工作

Javascript 页面加载后使用JQuery滚动到DIV不工作,javascript,c#,jquery,html,scroll,Javascript,C#,Jquery,Html,Scroll,我试图将页面滚动到DIV,其ID通过QueryString发送。页面的HTML内容是从SharePoint 2010的服务器端加载的 我使用了setTimeout()等待内容加载到页面上,超时后我应用逻辑滚动到div。但是页面没有滚动。代码如下: ExecuteOrDelayUntilScriptLoaded(getThankyouMsg, 'sp.js'); function getThankyouMsg() { var fid = getQueryStringParameter("

我试图将页面滚动到DIV,其ID通过
QueryString
发送。页面的HTML内容是从SharePoint 2010的服务器端加载的

我使用了
setTimeout()
等待内容加载到页面上,超时后我应用逻辑滚动到div。但是页面没有滚动。代码如下:

ExecuteOrDelayUntilScriptLoaded(getThankyouMsg, 'sp.js');

function getThankyouMsg() {
    var fid = getQueryStringParameter("fid");
    setTimeout(function () {
        //window.location.href = window.location.href.split('?')[0] + "#" + fid;
        jQuery('html, body').animate({
            scrollTop: jQuery("#" + fid).offset().top
        }, 2000);
    }, 7000);
}

function getQueryStringParameter(paramToRetrieve) {
    var params = document.URL.split("?")[1].split("&");
    for (var i = 0; i < params.length; i = i + 1) {
        var singleParam = params[i].split("=");
        if (singleParam[0] == paramToRetrieve)
            return singleParam[1];
    }
}
ExecuteOrderLayintlScriptLoaded(getThankyouMsg,'sp.js');
函数getThankyouMsg(){
var fid=getQueryStringParameter(“fid”);
setTimeout(函数(){
//window.location.href=window.location.href.split(“?”)[0]+“#”+fid;
jQuery('html,body')。动画({
scrollTop:jQuery(“#”+fid).offset().top
}, 2000);
}, 7000);
}
函数getQueryStringParameter(paramToRetrieve){
var params=document.URL.split(“?”[1]。split(“&”);
对于(变量i=0;i
你能告诉我我遗漏了什么吗


提前谢谢

无需编写自己的函数来等待页面加载。有一个jQuery函数用于:

您的滚动代码似乎可以与伪代码配合使用。这可能会对您更好一些:

$(document).ready(function() {
  getThankyouMsg();
});

function getThankyouMsg() {
  var fid = getQueryStringParameter("fid");
  jQuery('html, body').animate({
      scrollTop: jQuery("#" + fid).offset().top
  }, 2000);
}

function getQueryStringParameter(paramToRetrieve) {
    var params = document.URL.split("?")[1].split("&");
    for (var i = 0; i < params.length; i = i + 1) {
        var singleParam = params[i].split("=");
        if (singleParam[0] == paramToRetrieve)
            return singleParam[1];
    }
}
$(文档).ready(函数(){
getThankyouMsg();
});
函数getThankyouMsg(){
var fid=getQueryStringParameter(“fid”);
jQuery('html,body')。动画({
scrollTop:jQuery(“#”+fid).offset().top
}, 2000);
}
函数getQueryStringParameter(paramToRetrieve){
var params=document.URL.split(“?”[1]。split(“&”);
对于(变量i=0;i

这是假设getQueryStringParameter返回正确的值。我无法知道这一点,因为这取决于您的后端和使用的URL。

我找到了问题的解决方案。我们可以使用简单的JavaScript代替jQuery
animate
函数

ExecuteOrDelayUntilScriptLoaded(getThankyouMsg, 'sp.js');

function getThankyouMsg() {
    var fid = getQueryStringParameter("fid");
    setTimeout(function () {
        location.hash = "#"+fid; //This line will navigates to Div ID
    }, 7000);
}

function getQueryStringParameter(paramToRetrieve) {
    var params = document.URL.split("?")[1].split("&");
    for (var i = 0; i < params.length; i = i + 1) {
        var singleParam = params[i].split("=");
        if (singleParam[0] == paramToRetrieve)
            return singleParam[1];
    }
}
ExecuteOrderLayintlScriptLoaded(getThankyouMsg,'sp.js');
函数getThankyouMsg(){
var fid=getQueryStringParameter(“fid”);
setTimeout(函数(){
location.hash=“#”+fid;//此行将导航到Div ID
}, 7000);
}
函数getQueryStringParameter(paramToRetrieve){
var params=document.URL.split(“?”[1]。split(“&”);
对于(变量i=0;i
Location.Hash=“#divId”

将向下滚动到页面上的特定div。

您好,谢谢您的回复,但我必须使用setTimeout,因为此代码正在SharePoint中使用,而我检索的数据来自SharePoint列表,因此服务器端代码需要时间加载,而此JavaScript将首先运行。因此,当这个脚本运行时,它没有找到DIV。完全加载页面需要6到7秒,然后我必须运行这个JavaScript函数。@RahulGokani.ready应该阻止代码在dom就绪之前执行。您是使用javascript动态添加div还是将其硬编码到页面中?div是从服务器端(C#)代码添加到页面上的。