Javascript 页面加载后使用JQuery滚动到DIV不工作
我试图将页面滚动到DIV,其ID通过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("
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#)代码添加到页面上的。