如何简化这个JS函数
How to simplify this JS function
是否可以将这两个功能合二为一?
我尝试在一个函数中使用多个选择器,但没有工作结果。
我不熟悉香草JS。提前感谢!
document.addEventListener('DOMContentLoaded', function() {
var radioButtons = document.getElementsByName('viewangle');
var paragraph = document.querySelector('#closedview');
for(var i=0;i< radioButtons.length;i++)
{
var elem = radioButtons[i];
elem.addEventListener('change',function(e){
console.log(paragraph);
if(paragraph.className)
paragraph.className = this.value;
else
paragraph.classList.add(this.value);
}
,false);
}
});
document.addEventListener('DOMContentLoaded', function() {
var radioButtons = document.getElementsByName('viewangle');
var paragraph = document.querySelector('#openedview');
for(var i=0;i< radioButtons.length;i++)
{
var elem = radioButtons[i];
elem.addEventListener('change',function(e){
console.log(paragraph);
if(paragraph.className)
paragraph.className = this.value;
else
paragraph.classList.add(this.value);
}
,false);
}
});
尝试调用两个段落1 (closedview)和2 (openedview):
document.addEventListener('DOMContentLoaded', function() {
var radioButtons = document.getElementsByName("viewangle");
var paragraph1 = document.getElementById("closedview");
var paragraph2 = document.getElementById("openedview");
for(var i=0;i< radioButtons.length;i++){
var elem = radioButtons[i];
elem.addEventListener('change',function(e){
console.log(paragraph1);
console.log(paragraph2);
if(paragraph1.className){ paragraph1.className = this.value; }else{ paragraph1.classList.add(this.value); }
if(paragraph2.className){ paragraph2.className = this.value; }else{ paragraph2.classList.add(this.value); }
}
,false);
}
});
将普通的内容放在一个函数中,并将差异作为参数传递,如下所示:
document.addEventListener('DOMContentLoaded', function() {
myFunction('#closedview');
});
document.addEventListener('DOMContentLoaded', function() {
myFunction('#openedview');
});
function myFunction(viewId) {
var radioButtons = document.getElementsByName('viewangle');
var paragraph = document.querySelector(viewId);
for(var i=0;i< radioButtons.length;i++) {
var elem = radioButtons[i];
elem.addEventListener('change',function(e){
console.log(paragraph);
if(paragraph.className) {
paragraph.className = this.value;
} else {
paragraph.classList.add(this.value);
}
});
}
}
或者与@RobG的答案结合:将document.querySelector()的结果传递给myFunction()。
PS: @Federico的答案实际上更清晰更好:你只需要添加一个eventlistener..DOMContentLoaded
内相关文章:
- 当js函数's已执行
- 调用php数组中的JS函数
- 为JS函数添加延迟
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用JS函数来使用另一个函数的语法?node.js
- 将JS函数传递给Emscripten生成的代码
- 是否可以在使用headerphp函数后自动调用JS函数
- 如何在.js函数中检索来自其他模板的表单的目标值
- 简单的JS函数.需要对变量进行澄清
- 无法识别从php创建的Js函数
- 如何将对象传递给这个js函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- 将重定向URL链接添加到JS函数
- 从PHP调用JS函数不起作用
- js函数堆栈传入变量,.hide()不起作用
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 如何让JS函数自行执行
- 使用默认js函数的javascript中的日期的第二天
- 如何从页面中的jquery调用angular js函数控制器
- 从.js文件调用html中的js函数