简体   繁体   English

如何在Javascript中将x,y动态值分配给scrollTo()方法?

[英]How to assign x, y dinamic values to scrollTo() method in Javascript?

I try to get the values form Button elements: 我尝试从Button元素获取值:

<script>
    var elmnt = document.getElementById('<%= Button1.ClientID %>');
    var elmnt2 = document.getElementById('<%= Button2.ClientID %>');
    var x = elmnt.scrollLeft;
    var y = elmnt.scrollTop;
    var x2 = elmnt2.scrollLeft;
    var y2 = elmnt2.scrollTop;
    function ToTopOfPage(sender, args) { setTimeout("window.scrollTo(x, y)", 0); }
    function ToTopOfPage2(sender, args) { setTimeout("window.scrollTo(x2, y2)", 0); }

</script>      

When I click on the Button1 or Button2 does not jump to the element Here is the Button codes: 当我单击Button1或Button2时,未跳到元素。这是Button代码:

Button1: Button1的:

 ScriptManager.RegisterStartupScript(this, Page.GetType(), "ToTheTop", "ToTopOfPage();", true); 

Button2: BUTTON2:

 ScriptManager.RegisterStartupScript(this, Page.GetType(), "ToTheTop", "ToTopOfPage2();", true);

When I add some values to scrollTo() method for example window.scrollTo(2000,1000) the method works fine but when I assign a dinamic value does not work window.scrollTo(x,y). 当我向例如window.scrollTo(2000,1000)的scrollTo()方法中添加一些值时,该方法可以正常工作,但是当我分配动态值时,window.scrollTo(x,y)则不起作用。

setTimeout takes a function as its first parameter, and variables as the 3rd/4th/... parameter. setTimeout将函数作为第一个参数,并将变量作为3rd / 4th / ...参数。 Apparently it can convert a string containing function and parameters, but you really should forget that, and do something like: 显然,它可以转换包含函数和参数的字符串,但是您确实应该忘记这一点,并执行以下操作:

function ToTopOfPage(sender, x, y) {
    setTimeout(window.scrollTo, 0, x, y); 
}

EDIT: I find it hard to believe that it works with hardcoded values and the whole lot as a string, but not when it's done with variables. 编辑:我很难相信它可以与硬编码的值和整个字符串作为字符串一起使用,但是当它与变量一起使用时却不能。 You may want to recheck your variables: 您可能需要重新检查变量:

function testScrollTo(x,y) {
    console.log("x: ", x);
    console.log("y: ", y);
    window.scrollTo(x,y);
}

function ToTopOfPage(sender, x, y) {
    setTimeout(testScrollTo, 0, x, y); 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM