Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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 如何使用JS跳转到页面中的特定位置?已尝试滚动到视图,不工作_Javascript - Fatal编程技术网

Javascript 如何使用JS跳转到页面中的特定位置?已尝试滚动到视图,不工作

Javascript 如何使用JS跳转到页面中的特定位置?已尝试滚动到视图,不工作,javascript,Javascript,我有一个用于讨论的PHP表单。每条消息都有自己的响应按钮,该按钮是动态生成的。我在按钮中使用javascript使响应表单在页面底部可见,但我无法让页面在可见后跳转到表单。这对于有很多讨论的页面来说是个问题,因为一些用户可能不知道向下滚动,只会认为按钮不起作用 下面是我现在的按钮代码: <a href="#" onClick="changeVisibility(3,'responseForm')"><img src="images/reply.jpg" border=0 /&g

我有一个用于讨论的PHP表单。每条消息都有自己的响应按钮,该按钮是动态生成的。我在按钮中使用javascript使响应表单在页面底部可见,但我无法让页面在可见后跳转到表单。这对于有很多讨论的页面来说是个问题,因为一些用户可能不知道向下滚动,只会认为按钮不起作用

下面是我现在的按钮代码:

<a href="#" onClick="changeVisibility(3,'responseForm')"><img src="images/reply.jpg" border=0 /></a>

在我的表单中,有一个div的id设置为responseForm。单击按钮时,div确实变为可见,但scrollIntoView不工作-我必须手动向下滚动才能看到它。有什么想法吗?

使用window.location.hash

function changeVisibility(parentID, elementID) {
  document.getElementById(elementID).style.visibility="visible";
  document.forms[0].parent_id.value=parentID;
  window.location.hash = '#' + elementID;
  return false;
}

<a href="#" onClick="return changeVisibility(3,'responseForm')"><img src="images/reply.jpg" border=0 /></a> 

编辑:我认为之前的问题是,您没有返回false,因此将要执行的默认操作仍在发生

使用window.location.hash

function changeVisibility(parentID, elementID) {
  document.getElementById(elementID).style.visibility="visible";
  document.forms[0].parent_id.value=parentID;
  window.location.hash = '#' + elementID;
  return false;
}

<a href="#" onClick="return changeVisibility(3,'responseForm')"><img src="images/reply.jpg" border=0 /></a> 

编辑:我认为之前的问题是,您没有返回false,因此将要执行的默认操作仍在发生

User window.location.hash重定向到ID/锚点。例如

HTML:

艾美奖-这个代码确实有效。下面是一个完整的示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
  <head>
    <title>Some title</title>

    <script type="text/javascript">
      function jumpToParagraph() {
        window.location.hash='paragraphjump';
      }
    </script>
  </head>
  <body>
    <p onclick='jumpToParagraph();'>Jump to the paragraph at the end! [version 1]</p>

    <p><a href="javascript:jumpToParagraph();">Jump to the paragraph at the end! [version 2]</a></p>

    <p style="height: 1500px;">Some nonsense</p>

    <p id="paragraphjump">You made the jump</p>
  </body>
</html>

将其放入文件并在浏览器中测试该文件。

User window.location.hash可重定向到ID/锚定。例如

HTML:

艾美奖-这个代码确实有效。下面是一个完整的示例:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
  <head>
    <title>Some title</title>

    <script type="text/javascript">
      function jumpToParagraph() {
        window.location.hash='paragraphjump';
      }
    </script>
  </head>
  <body>
    <p onclick='jumpToParagraph();'>Jump to the paragraph at the end! [version 1]</p>

    <p><a href="javascript:jumpToParagraph();">Jump to the paragraph at the end! [version 2]</a></p>

    <p style="height: 1500px;">Some nonsense</p>

    <p id="paragraphjump">You made the jump</p>
  </body>
</html>

将其放入文件并在浏览器中测试该文件。

嗯,您可以尝试使用document.body.scrollTop=document.getElementByIdelementId.offsetop;未测试

嗯,您可以尝试使用document.body.scrollTop=document.getElementByIdelementId.offsetTop;未经测试

哼,以下JavaScript代码工作起来很有魅力:

<script type="text/javascript">
function scrollToPos() {
    var el = document.getElementById("abc");
    el.style.visibility = "visible";
    el.style.display = "block";
    el.scrollIntoView(true);
}
</script>
单击此链接时 下面的div-get将可见并滚动到IE6、IE8、FF3.6.3、Google Chrome 4.1和Opera 10.5中测试的视图中,所有这些都在windows上

<div id="abc" style="height:100px;color:red;font-weight:bold;visibility:hidden;display:none;">
    abc
</div>

嗯,下面的JavaScript代码工作起来很有魅力:

<script type="text/javascript">
function scrollToPos() {
    var el = document.getElementById("abc");
    el.style.visibility = "visible";
    el.style.display = "block";
    el.scrollIntoView(true);
}
</script>
单击此链接时 下面的div-get将可见并滚动到IE6、IE8、FF3.6.3、Google Chrome 4.1和Opera 10.5中测试的视图中,所有这些都在windows上

<div id="abc" style="height:100px;color:red;font-weight:bold;visibility:hidden;display:none;">
    abc
</div>

好的,我终于找到了一个有效的方法。我一直在做石器时代教我做的事情:在需要链接的地方使用javascript调用时,使用

a href="#" onClick="yourFunction()"
很明显,对我来说,这是一种杀伤力;如果我用

a href="javascript:yourFunction()"

它工作正常。这可能被认为是好的做法,也可能不再被认为是好的做法,但它是有效的。

好的,我终于找到了有效的方法。我一直在做石器时代教我做的事情:在需要链接的地方使用javascript调用时,使用

a href="#" onClick="yourFunction()"
很明显,对我来说,这是一种杀伤力;如果我用

a href="javascript:yourFunction()"

它工作正常。这可能被认为是好的做法,也可能不再被认为是好的做法,但它仍然有效。

不,它仍然与我的原始代码做的一样-闪烁一秒钟,然后返回到原始的消息显示。我在Firefox 3.6.3、Chrome和IE8中进行了测试。很多年后,我发现了这个线程!。使用正在执行其他任务的函数,除了调用scrollIntoView return false之外,还修复了一个问题,即元素会立即滚动到视图中,然后窗口会滚动到页面顶部,这可能是由于href=.Nope,仍然和我原来的代码做的一样-闪烁一秒钟,然后返回到最初的消息显示。我在Firefox 3.6.3、Chrome和IE8中进行了测试。很多年后,我发现了这个线程!。除了调用scrollIntoView return false之外,还有一个正在执行其他任务的函数,它修复了一个问题,即元素会立即滚动到视图中,然后窗口会滚动到页面顶部,这可能是由于href=.Nope的缘故,但似乎什么也没做。更改可见性的代码可以正常工作,但不会发生其他事情。没有错误。我已经在Firefox 3.6.3、Chrome和IE8中进行了测试。不,似乎什么都没做。更改可见性的代码可以正常工作,但不会发生其他事情。没有错误。我已经在Firefox 3.6.3、Chrome和IE8中进行了测试。与上面第一个答案中列出的代码相同;什么都没做。好吧,再试一次,这里有什么奇怪的或者不奇怪的;我使用CSS和javascript已经很久了:如果我把onClick事件放在段落标记中,它就可以正常工作。如果我尝试将它放在href标记中,如在a href=onClick='jumpToParagraph'中一样,它将不起作用。将它放在除href以外的任何标记中的问题是,除非您使用href,否则浏览器不会将光标更改为手形,因此许多人会认为您应该单击的东西是不可单击的,即使它应该是。关于如何使其在href标记中工作,有什么想法吗?不起作用的原因是,通过单击,浏览器使用href中的作为其锚定链接。。。这就导致了现在的他
重新。你必须在href中使用javascript:如果你想让它工作,请参阅上面我编辑过的版本;什么都没做。好吧,再试一次,这里有什么奇怪的或者不奇怪的;我使用CSS和javascript已经很久了:如果我把onClick事件放在段落标记中,它就可以正常工作。如果我尝试将它放在href标记中,如在a href=onClick='jumpToParagraph'中一样,它将不起作用。将它放在除href以外的任何标记中的问题是,除非您使用href,否则浏览器不会将光标更改为手形,因此许多人会认为您应该单击的东西是不可单击的,即使它应该是。关于如何使其在href标记中工作,有什么想法吗?不起作用的原因是,通过单击,浏览器使用href中的作为其锚定链接。。。而且它什么都没有。如果你想让它工作,你必须在href中使用javascript:查看上面我编辑的版本。这个版本也不工作。显然有一些奇怪的事情发生了,但我已经直接复制了你的代码,就像我复制了所有其他答案一样,甚至重命名了我的div以匹配你的,以防万一。它仍然只是短暂地闪烁并取消隐藏表单,但不会跳转到表单。奇怪的是Firebug没有给我任何错误;它只是没有做你们都说它应该做的事情。那个也不起作用。显然有一些奇怪的事情发生了,但我已经直接复制了你的代码,就像我复制了所有其他答案一样,甚至重命名了我的div以匹配你的,以防万一。它仍然只是短暂地闪烁并取消隐藏表单,但不会跳转到表单。奇怪的是Firebug没有给我任何错误;它只是没有做你们都说它应该做的事情。