Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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而不是jquery中更改父div的css_Javascript - Fatal编程技术网

如何在javascript而不是jquery中更改父div的css

如何在javascript而不是jquery中更改父div的css,javascript,Javascript,如果我单击父div的子div,我想更改父div的CSS,而不是,例如,如果我单击href标记。我想更改其class=“changed\u area”的CSS 我该怎么做 var up_btn=document.getElementsByClassName('up_btn'); var up_btn_length=up_btn.length; var changed_area=document.getElementsByClassName('changed_area'); var changed

如果我单击父div的子div,我想更改父div的CSS,而不是,例如,如果我单击href标记。我想更改其class=“changed\u area”的CSS

我该怎么做

var up_btn=document.getElementsByClassName('up_btn');
var up_btn_length=up_btn.length;
var changed_area=document.getElementsByClassName('changed_area');
var changed_area_length=changed_area.length;
对于(变量i=0;i

图像;?>" />
穆罕默德


我想你可以这样做:

编辑:更好的方法

 for (var i = 0; i < up_btn_length; i++) {
    up_btn[i].addEventListener('click', function(){
        var changed_area = up_btn[i].parentElement;
        if ( changed_area.classList.contains('changed_area') ) {
            changed_area.classList.remove('changed_area')
        }
        else {
            changed_area.classList.add('changed_area')
        }
        if(changed_area.style.top == '-100%') {
            changed_area.style.top = '0%';
        }
        else {
            changed_area.style.top = '-100%';
        }
    });
}
for(变量i=0;i
只需在父级上添加事件侦听器,然后使用
currentTarget

const parent = document.getElementsByClassName('changed_area');// select parent
for (var i = 0; i < parent.length; i++) {
  parent[i].addEventListener('click', (ev) => ev.currentTarget.className = 'clicked');
}
const parent=document.getElementsByClassName('changed_area');//选择父项
对于(变量i=0;iev.currentTarget.className='clicked');
}

你的代码会影响你所有的div,我认为这不是你想要的

要使用javascript访问父元素,您可以使用
parentElement
。要获取父元素的父元素…如果满足某些条件(如拥有类),您可以执行以下操作:

function Get_changed_area(targetElement){
    var parent = targetElement.parentElement;
    if(parent.hasClass('changed_area'))
        return parent;
    else Get_changed_area(parent)  //repeat the function for parent
}
for (var i = 0; i < up_btn_length; i++) {
   up_btn[i].addEventListener('click', function() {
   changed_area = Get_changed_area(up_btn[i]);
   if (changed_area.style.top == '-100%') {
    changed_area.style.top = '0%';
   } 
   else {
    changed_area.style.top = '-100%';
   }
  }
 }
函数获取更改区域(targetElement){
var parent=targetElement.parentElement;
if(parent.hasClass('changed_area'))
返回父母;
else Get\u changed\u area(parent)//对parent重复该函数
}
对于(变量i=0;i
此外,如果要确保选择正确的div,可以使用'up_btn[i]'的属性'parentElement'(因为当前如果没有相同数量的div和按钮,则会出现错误)。例如,如果放置另一个没有parentDiv的按钮,“changed_区域[i]'将是未定义的。我已使用此解决方案编辑了我的帖子。如何?我想你的意思是“祖先”而不是“父”,是“后代”而不是“子”。如果我错了,请更正。请参阅: