Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 为每个新循环添加新ID_Javascript_Loops - Fatal编程技术网

Javascript 为每个新循环添加新ID

Javascript 为每个新循环添加新ID,javascript,loops,Javascript,Loops,我正在开发一种使用li标记的循环。对于这个循环,我将使用一些文本,这些文本将通过一个简单的打开和关闭JavaScript代码来显示,我在单击某处时编写了这些代码。大家都知道,这种代码是通过getElementById属性操作的。然而,由于我将循环这些列表项,所以我不能在它们中重复ID。那么,如何在不重复ID的情况下循环这些列表项呢 以下面的HTML为例: <section class="pro-further"> <span>Consulte</span>

我正在开发一种使用
li
标记的循环。对于这个循环,我将使用一些文本,这些文本将通过一个简单的打开和关闭JavaScript代码来显示,我在单击某处时编写了这些代码。大家都知道,这种代码是通过
getElementById
属性操作的。然而,由于我将循环这些列表项,所以我不能在它们中重复ID。那么,如何在不重复ID的情况下循环这些列表项呢

以下面的HTML为例:

<section class="pro-further">
  <span>Consulte</span><br>
  <ul>
    <li><div onClick="furtherInfo('test');">Info one</div>
      <div id="test">Text for first info</div>
    </li>
    <li><div>Info two</div>
      <div>Text for second info</div>
    </li>
    <li><div>Info three</div>
      <div>Text for third info</div>
    </li>
    <li><div>Info four</div>
      <div>Text for fourth info</div>
    </li>
    <li><div>Info five</div>
      <div>Text for fifth info</div>
    </li>
    <li><div>Info six</div>
      <div>Text for sixth info</div>
    </li>
  </ul>
</section>
还有CSS

.pro-further ul {
  width:100%;
  list-style-type:none;
  margin-left:0px;
}

.pro-further ul li > div {
  width:99.3%;
  font-size:14px;
  color:#FFF;
  background:url(../images/plus2.png) #23459F no-repeat 99% 50%;
  padding:6px 2px 6px 5px;
  margin-bottom:3px;
  cursor:pointer;
}

.pro-further ul li > div + div {
  width:98.5%;
  font-size:13px;
  color:#737373;
  background:white;
  border:1px solid #23459F;
  padding:2px 5px 2px 5px;
  margin-top:-3px;
  display:none;
  cursor:text;
}
谢谢大家!


您可以为每个项目指定一个类,然后使用
document.getElementsByCassName()循环遍历它们。

请参见此处的更多信息:

您可以为每个项目指定一个类,然后使用
document.getElementsByCassName()循环遍历它们。

请参见此处的更多信息:

您可以为每个项目指定一个类,然后使用
document.getElementsByCassName()循环遍历它们。

请参见此处的更多信息:

您可以为每个项目指定一个类,然后使用
document.getElementsByCassName()循环遍历它们。

请参见此处的更多信息:
这里有一个无ID的解决方案:

window.onload=function(){
var elems=document.getElementsByTagName(“li”);
对于(变量i=0;i

为了限制“getElementsByTagName”,我建议给您的外部容器(带有
class=“pro-further”
的容器)一个ID,这样它看起来像
,这样您就可以指定
var-elems=document.getElementById(“pro-furth-toggles”).getElementsByTagName(“li”);

以下是一个无ID的解决方案:

window.onload=function(){
var elems=document.getElementsByTagName(“li”);
对于(变量i=0;i

为了限制“getElementsByTagName”,我建议给您的外部容器(带有
class=“pro-further”
的容器)一个ID,这样它看起来像
,这样您就可以指定
var-elems=document.getElementById(“pro-furth-toggles”).getElementsByTagName(“li”);

以下是一个无ID的解决方案:

window.onload=function(){
var elems=document.getElementsByTagName(“li”);
对于(变量i=0;i

为了限制“getElementsByTagName”,我建议给您的外部容器(带有
class=“pro-further”
的容器)一个ID,这样它看起来像
,这样您就可以指定
var-elems=document.getElementById(“pro-furth-toggles”).getElementsByTagName(“li”);

以下是一个无ID的解决方案:

window.onload=function(){
var elems=document.getElementsByTagName(“li”);
对于(变量i=0;i

为了限制“getElementsByTagName”,我建议给您的外部容器(带有
class=“pro-further”
的容器)一个ID,因此它看起来像
,这样您就可以指定
var-elems=document.getElementById(“pro-furth-toggles”).getElementsByTagName(“li”);

在这种情况下,您可以只使用DOM遍历,假设兄弟关系不变:

var furtherInfo = function(el) {
    var openInfo = el.nextElementSibling;
  openInfo.style.display = openInfo.style.display == 'block' ? 'none' : 'block'
}
假设为HTML,例如:

<ul>
    <li><div onClick="furtherInfo(this);">Info one</div>
      <div id="test">Text for first info</div>
    </li>
    <li><div onClick="furtherInfo(this);">Info two</div>
      <div>Text for second info</div>
    </li>
    <!-- and so on... -->
  </ul>
  • 信息一 第一信息文本
  • 信息二 第二信息文本

.

在这种情况下,您可以只使用DOM遍历,假设兄弟关系为常量:

var furtherInfo = function(el) {
    var openInfo = el.nextElementSibling;
  openInfo.style.display = openInfo.style.display == 'block' ? 'none' : 'block'
}
假设为HTML,例如:

<ul>
    <li><div onClick="furtherInfo(this);">Info one</div>
      <div id="test">Text for first info</div>
    </li>
    <li><div onClick="furtherInfo(this);">Info two</div>
      <div>Text for second info</div>
    </li>
    <!-- and so on... -->
  </ul>
  • 信息一 第一信息文本
  • 信息二 第二信息文本

.

在这种情况下,您可以只使用DOM遍历,假设兄弟关系为常量:

var furtherInfo = function(el) {
    var openInfo = el.nextElementSibling;
  openInfo.style.display = openInfo.style.display == 'block' ? 'none' : 'block'
}
假设为HTML,例如:

<ul>
    <li><div onClick="furtherInfo(this);">Info one</div>
      <div id="test">Text for first info</div>
    </li>
    <li><div onClick="furtherInfo(this);">Info two</div>
      <div>Text for second info</div>
    </li>
    <!-- and so on... -->
  </ul>
  • 信息一 第一信息文本
  • 信息二 第二信息文本

.

在这种情况下,您可以只使用DOM遍历,假设兄弟关系为常量:

var furtherInfo = function(el) {
    var openInfo = el.nextElementSibling;
  openInfo.style.display = openInfo.style.display == 'block' ? 'none' : 'block'
}
假设为HTML,例如:

<ul>
    <li><div onClick="furtherInfo(this);">Info one</div>
      <div id="test">Text for first info</div>
    </li>
    <li><div onClick="furtherInfo(this);">Info two</div>
      <div>Text for second info</div>
    </li>
    <!-- and so on... -->
  </ul>
  • 信息一 第一信息文本
  • 信息二 第二信息文本

.

无论如何,为多个DOM元素提供相同的ID是非法的。无论如何,为多个DOM元素提供相同的ID是非法的。无论如何,为多个DOM元素提供相同的ID是非法的。无论如何,为多个DOM元素提供相同的ID是非法的。