Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在window.open打开的窗口中滚动到没有ID的元素_Javascript_Jquery - Fatal编程技术网

Javascript 在window.open打开的窗口中滚动到没有ID的元素

Javascript 在window.open打开的窗口中滚动到没有ID的元素,javascript,jquery,Javascript,Jquery,在我的页面顶部,我有一个包含两个项目的菜单,当我单击它们时,我使用以下代码行滚动到页面中放置div的位置: $('html, body').animate({scrollTop:$(divid).position().top - 160 }, 'slow'); 其中$(divid)包含div的类名(我使用的是Drupal,因此不存在添加ID的可能性) 这很好用,但现在我在另一页有了相同的菜单。当我单击一个链接时,我会导航到该div所在的页面,但我无法让它滚动到该div 经过大量的研究,我得到了

在我的页面顶部,我有一个包含两个项目的菜单,当我单击它们时,我使用以下代码行滚动到页面中放置div的位置:

$('html, body').animate({scrollTop:$(divid).position().top - 160 }, 'slow');
其中$(divid)包含div的类名(我使用的是Drupal,因此不存在添加ID的可能性)

这很好用,但现在我在另一页有了相同的菜单。当我单击一个链接时,我会导航到该div所在的页面,但我无法让它滚动到该div

经过大量的研究,我得到了这段代码

$('#block-views-footer-menu-block-2 .views-row-6 a').click(function(e){
    e.preventDefault();
    var newwindow = window.open('/aanbod', '_self');

    $(newwindow.document).ready(function(){
        to_position('.field-paragraphs:nth-of-type(6)');
    });
});
where to_position()包含本文的第一行代码

但是,to_position()函数在加载新窗口之前激发。这样,to_position()函数被激发的时刻,“.field段落:类型(6)”的第n个”是未知的,因此该函数无法访问它的位置

我真的不知道我做错了什么,任何帮助都是感激的


提前谢谢

将信息传递到弹出窗口本身,让它为您进行滚动

var newwindow = window.open('/aanbod?scrolltoposition=' + ".field-paragraphs:nth-of-type(6)", '_self');
现在在这个新窗口中,添加代码以滚动您想要滚动到的位置

$(document).ready( function(){

   var elementSelector = location.search.split( "=" )[1];
   var $element = $( elementSelector );
   $('html, body').animate({scrollTop:$element.position().top - 160 }, 'slow');

} );

确保已将jquery包含在弹出窗口中

如果使用jquery,可以使用以下命令

    $(document).ready(function(){
    // your code
    });

在文档“就绪”之前,页面无法安全操作。jQuery会为您检测这种就绪状态。$(document).ready()中包含的代码只有在页面文档对象模型(DOM)准备好让JavaScript代码执行后才会运行。$(window).load(function(){…})中包含的代码将在整个页面(图像或iframes,而不仅仅是DOM)就绪后运行。

谢谢,这一个对我有用!URL现在不像以前那么干净了,但我就是找不到另一种方法让它工作,所以这将是解决方案。