如何在window.location.href中使用动态生成的id?

How to use a dynamically generated id in window.location.href?

我在 js 和 htm 中有以下代码。

<div id="div1_myDiv">This is my div1</div>
<div id="div2_myDiv">This is my div2</div>
<div id="div3_myDiv">This is my div3</div>

<div id="button1" onclick="openDiv('div1')">Show div1</div>
<div id="button2" onclick="openDiv('div2')">Show div2</div>
<div id="button3" onclick="openDiv('div3')">Show div3</div>

每当单击按钮 (div) 时,页面应滚动到 div 的顶部。

function openDiv(divID) {
      var myDivID = "#" + divID + "_myDiv";
      window.location.href = myDivID;
    }

这似乎不起作用。请指教解决方法。

此问题被标记为 div scroll to in javascript 的重复问题,但这并没有帮助。

如果您只需要滚动到 window window.location.href = "#" 的顶部 会做的很好。

function popitup(url,windowName) {
       newwindow=window.open(url,windowName,'height=200,width=150');
       if (window.focus) {newwindow.focus()}
       return false;
     }

试试这个 有动画

   function openDiv() {
           var myDivID = "#" + divID + "_myDiv";
            $('html, body').animate({ scrollTop: $(myDivID).position().top}, 1000);
        });

"window.location.href"用于改变浏览器的当前网页。 对于您的任务,您可以使用锚标记元素来显示 div 部分。就像下面一样,

    <div id="div1_myDiv">This is my div1</div>
    <div id="div2_myDiv">This is my div2</div>
    <div id="div3_myDiv">This is my div3</div>
    ...
    <a id="button1" href="#div1_myDiv">Show div1</a>
    <a id="button2" href="#div2_myDiv">Show div1</a>
    <a id="button3" href="#div3_myDiv">Show div1</a>

能否请您按以下方式修改您的function openDiv()

function openDiv(divID) {
    var myDivID = "#" + divID + "_myDiv";
    window.location.hash = myDivID; //setting the location.hash
}

您需要 concate 现有 URL 中的 myDivID。

试试这个解决方案

function openDiv(divID) {
    //alert(divID);
    var myDivID = "#" + divID + "_myDiv";
    //window.location.hash = myDivID;
    window.location.href=window.location.href.concat('#Id');
    console.log(window.location.href);
}
<div id="div1_myDiv">This is my div1</div>
<div id="div2_myDiv">This is my div2</div>
<div id="div3_myDiv">This is my div3</div>
...
<div id="button1" onclick="openDiv('div1')">Show div1</div>
<div id="button2" onclick="openDiv('div2')">Show div2</div>
<div id="button3" onclick="openDiv('div3')">Show div3</div>