如何使用 JavaScript 动态处理隐藏的 div id

How to handle hidden div id dynamically with JavaScript

我想做一个动态页面,我有一个隐藏的 div,我想让它可见并附加到另一个 div,但我想在这里只用一个函数来做是我的代码。

<script>
var hiddenDivID;
function appendHiddenDiv(hiddenDivID){
    var hiddenDiv = document.getElementById(hiddenDivID);
    var document = document.getElementById('content');
    document.appendChild(hiddenDiv);
}

function choices(e){
   if(e.id == 03){
    appendHiddenDiv('myHiddenDiv');
   }
}

<!-- Visible Content-->
<div id="content">
 My content
</div>
<span id="03" onclick="choices(this);">Click Here</span>
<!-- Visible Content-->

<!-- Invisible Content-->
  <div id="contentHidden">
    <div id ="myHiddenDiv">
       Hidden content
    </div>
  </div>
<!-- Invisible Content-->

我创建了一个函数,如果我单击此处 hiddenDivID = myHiddenDiv 并调用 appendHiddenDiv(),那么它需要 myHiddenDiv 并附加到 <div id="content"></div>。但这不起作用,我在这方面做错了什么?有没有办法让函数将其识别为 id?如果有,有人可以告诉我正确的方向吗?提前致谢。

这将在您单击它时附加您的 div。你有 e.id == 03,你需要 e.id == '03'(id 是一个字符串)。

<script>
var hiddenDivID;
function appendHiddenDiv(hiddenDivID){
    var hiddenDiv = window.document.getElementById(hiddenDivID);
    var document = window.document.getElementById('content');
    document.appendChild(hiddenDiv);
}

function choices(e){

   if(e.id == '03'){
    appendHiddenDiv('myHiddenDiv');
   }
}
</script>



<div id="content">
 My content
</div>
<span id="03" onclick="choices(this);">Click Here</span>
<!-- Visible Content-->

<!-- Invisible Content-->
  <div id="contentHidden">
    <div id ="myHiddenDiv">
       Hidden content
    </div>
  </div>

这里有几件事,我对这两件事都有一个建议。我认为,如果您只是隐藏一个元素,然后让它在单击时出现,那么就没有必要在您的 HTML 中将两者分开只是为了在后面附加它们。您可以隐藏和显示它们。 (显示:none 和 display:block)。功能也更加灵活。您可以在任何具有您喜欢的 ID 的元素上使用它。

HTML

<!-- Visible Content-->
<div id="content">
 My content
</div>
<span id="03" onclick="choices(this)">Click Here

<!-- Invisible Content-->
  <div id="contentHidden">
    <div id ="myHiddenDiv">
       Hidden content
    </div>
  </div>
<!-- Invisible Content-->

</span>
<!-- Visible Content-->

CSS

#contentHidden{
display:none;
}

JS

<script>
function choices(e){
    var elemId = e.id, // get the id of the clicked element
        hiddenElem = e.children[0]; // get the child of the clicked element

    // if the hidden elements display style is set to none or undefined, set it to block 
    if (hiddenElem.style.display === "none" || hiddenElem.style.display === "" ){
        hiddenElem.style.display = "block";
    } 
}
</script>

更好的方法

我比较喜欢这种方法。您有基础 HTML,然后动态添加 "hidden" 元素。这样你就可以将这个函数添加到你想要的元素和文本中。

HTML

<!-- Visible Content-->
<div id="content">
 My content
</div>
<span id="03" onclick="choices(this)">Click Here

</span>
<!-- Visible Content-->

JS

function choices(e, txt){
       var elemId = e.id, // get the id of the clicked element
           hiddenElem = e.children[0]; // get the child of the clicked element
           makeElem = document.createElement("div"); // create a div element

       makeElem.textContent = txt; // set the text of the div element to that passed by the function arrument 
       e.appendChild(makeElem); // append the created element to the clicked element
    }