编辑CSS的可重用功能
Reusable Function to Edit CSS
我已经为此寻找了一个解决方案。我无法使用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>
提前感谢你对我的宽容,再一次,我很纠结JavaScript。
尽量避免内联操作-这可能会导致问题,并且会变得相当混乱。还是一起做比较好。
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>
注意,我也给每个bigMe
一个ID
,只是为了更清楚地说明这是如何工作的。
接下来我们要做的是定义元素&附加一些监听器,这基本上是你的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
触发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语句在这里会更有效。原因是,在JS中,当你有一个IF,它会评估所有的方式。因此,如果您检查block
并更改为none
,那么在您检查none
的下一个语句中,它将认为元素设置为none
,因此将其设置回block。什么事也不会发生的。
switch语句有断点。一旦一个语句被计算为true
,那么它执行它的块中的任何内容并退出。我还添加了一个default
语句,这是一个捕获所有内容的语句,它将确保无论发生什么事情,
希望这对你有帮助!
- 网站中非常酷的javascript或CSS功能
- 如何使用CSS或JQuery使整个网页看起来更小(就像Chrome的缩小功能一样)
- 是否有用于CSS浏览器支持新功能的javascript解决方案
- CSS与Jquery、滑块、动画、灯箱..加载时间与功能
- jQuery移动Ajax导航功能和CSS样式
- 是否可以设置一个功能“;联系我们”;页面使用HTML/CSS
- css图片精灵到javascript鼠标功能
- 具有辅助功能的浏览器是否支持CSS或JavaScript
- 选择框在应用 css/javascript 时失去功能
- 具有手动切换功能的 CSS 移动媒体样式
- Css 悬停功能由于 zindex 而不起作用
- 可扩展的 Div,在 CSS 中具有过渡功能
- jQuery PageSlide:点击.css功能
- Javascript / css照片弹出功能放置问题
- 我决定不支持IE7;我现在可以使用哪些 JS/CSS/HTML 功能
- 翻转图像的HTML / CSS / Javascript功能不起作用
- CSS缩小Magento的默认功能不起作用
- 我可以/应该使用什么HTML/CSS/JS库来获得类似的XAML功能
- 如何设置CSS动画计时功能的计时器
- 使用Javascript删除CSS悬停功能