我已经为此寻找了解决方案。我无法使用jQuery并且难以使用JavaScript但它必须使用JavaScript。
我想使用一个函数来编辑我点击的div的子节点。我还想在
上重用该功能这是标记:
function expdr() {
if (this.style.display == "block") {
this.style.display = "none";
} else {
this.style.display = "block";
}
}

.bigMe {display: block;}

<div id="whole">
<div id="bleb" onclick="expdr()">
<h2>Headline Here!</h2>
<p>Paragraph here also. Isn't it a lovely day? Actually I'm asking because I'm stuck in an office.</p>
<div class="bigMe">
<p>This is a paragraph in a second comp class</p>
</div>
</div>
<div id="bloab" onclick="expdr()">
<h2>Headline Here!</h2>
<p>Paragraph here also. Isn't it a lovely day? Actually I'm asking because I'm stuck in an office.</p>
<div class="bigMe"> <!-- Div ARRAY = 4 -->
<p>This is a paragraph in a second comp class</p>
</div>
</div>
</div>
&#13;
提前感谢您对我的轻松,再次,我在使用JavaScript。
答案 0 :(得分:2)
尽量避免在线进行操作 - 这可能会导致问题,并且会变得相当混乱。最好一起做这件事。
https://jsfiddle.net/22vjokv2/
让我们来看看 -
首先,我们将删除内联JS调用并将类添加到容器中 -
<div id="whole">
<div id="bleb" class='article'>
<h2>Headline Here!</h2>
<p>Paragraph here also. Isn't it a lovely day? Actually I'm asking because I'm stuck in an office.</p>
<div class="bigMe" id='bigMe1'>
<p>This is a paragraph in a second comp class</p>
</div>
</div>
<div id="bloab" class='article'>
<h2>Headline Here!</h2>
<p>Paragraph here also. Isn't it a lovely day? Actually I'm asking because I'm stuck in an office.</p>
<div class="bigMe" id='bigMe2'>
<!-- Div ARRAY=4 -->
<p>This is a paragraph in a second comp class</p>
</div>
</div>
</div>
请注意,我还为每个ID
提供了bigMe
,以便更清楚地说明其工作原理。
接下来我们需要做的是定义我们的元素&amp;附上一些听众,这基本上就是你onclick
正在做的事情,但是在JS
中正确地做了。
var articles = document.getElementsByClassName("article");
for (var i = 0; i < articles.length; i++) {
articles[i].addEventListener("click", expdr, false);
};
我在这里通过搜索该类来定义articles
,还记得我将article
的类添加到bigMe
元素吗?
然后我循环遍历这些元素并按索引分配一个监听器,我说onclick
fire expdr
并且false
正在冒泡。
接下来让事情发生 -
function expdr() {
var bigMe = this.querySelector('.bigMe');
switch (bigMe.style.display) {
case "block":
bigMe.style.display = "none";
break;
case "none":
bigMe.style.display = "block";
break;
default:
bigMe.style.display = "none";
break;
}
}
因此您可以保留函数expdr
,但需要进行一些更改。我们要做的第一件事是获取我们的子元素。在这种情况下,它是bigMe
,我使用querySelector()
来查找它。请注意,我说this.querySelector
我可以使用this
的原因是因为调用方法的元素是articles
所以this == article
被点击了。
现在我们有bigMe
我们需要用它来做事。 switch语句在这里会更有效。原因在于,当你有一个IF时,它会一直评估。因此,如果您检查block
并更改为none
,则在下一个语句中检查none
,它会认为该元素设置为none
,因此请将其设置为块。什么都不会发生。
switch语句有中断。一旦语句评估为true
,它就会在其块中执行任何操作并退出。我还在一个default
语句中添加了一个可以确保无论发生什么事情的所有内容。
希望这有帮助!