onclick不能按预期工作

hrhsii

我有一个脚本,单击该脚本可展开手风琴菜单。我通过使用getElementsByClassName选择所需的菜单项

window.onload = function() {
 var acc = document.getElementsByClassName("accordion_f");
 //  var acc = document.querySelectorAll(".accordion_f");
 var i; 

// test code start
 acc[10].classList.toggle("active");
 acc[10].nextElementSibling.classList.toggle("show");
// test code end

 for (i = 0; i < acc.length; i++) {
   acc[i].onclick = function(){
//        acc[i].classList.toggle("active");
   this.classList.toggle("active");
//        acc[i].nextElementSibling.classList.toggle("show");
   this.nextElementSibling.classList.toggle("show");
   }
 }
};  

不幸的是,onclick不会触发,我不确定自己在做什么错。我通过使用测试了getElementsByClassName

acc[10].classList.toggle("active");
acc[10].nextElementSibling.classList.toggle("show");

这可以正常工作,因此getElementsByClassName可以正常工作,我也尝试过使用document.querySelector,所有这些也可以正常工作

我尝试使用此方法,但是acc [i]似乎都没有用。但是我感觉这不是问题,因为当我检查html元素并检查“事件”时,我没有看到在当前元素上注册任何事件处理程序。

我的html看起来像这样:

<button class="accordion_f">24/7 Activity Tracking</button>
<div class="panel">
      <p>Tracks your daily activity at five intensity levels for 24 hours a day, seven days a week, and provides a complete picture of all of your activity. It counts your active time, daily burnt calories, steps, distance from steps and sleep.</p>
</div>

因此,总而言之,为什么要这样做:

 acc[10].classList.toggle("active");
 acc[10].nextElementSibling.classList.toggle("show");

但这不起作用甚至无法在元素上注册

   acc[i].onclick = function(){

更新

我的手风琴菜单位于Tab菜单内,该菜单具有自己的JavaScript来更改标签:

var newHTML = document.getElementById(newTab).innerHTML;
document.getElementById('first_View').innerHTML = newHTML;

我将手风琴菜单移至Tab菜单之外,并且onclick起作用了。如果我从选项卡菜单脚本中注释掉上面的代码,我的手风琴菜单可以使用,但是选项卡菜单不会更改。

使用addEventListener代替onclick进行进一步测试:

window.onload = function() {
  var acc = document.getElementsByClassName("accordion_f");
  var i; 

// test code start
  acc[10].classList.toggle("active");
  acc[10].nextElementSibling.classList.toggle("show");
// test code end

  for (i = 0; i < acc.length; i++) {
    acc[i].addEventListener('click', expand_m, false); 
  } 
};  

function expand_m(){      
   this.classList.toggle("active");
   this.nextElementSibling.classList.toggle("show");
}

这与上面的原始onclick代码完全相同,当我检查html元素并检查Events时,我看不到当前元素上注册了任何事件处理程序,因此单击对我不起作用,除非我停止innerHTML更改。

任何帮助,将不胜感激。

hrhsii

问题是我的JavaScript嵌入了另一个菜单,选项卡菜单中的javascript覆盖了我的手风琴菜单javascript。

因此,我只是在Tab菜单的末尾调用了手风琴功能,然后onclicks开始起作用。

function changeTab(tab){        
var newTab = "view"+tab;
var element_id = "t";
var newHTML = document.getElementById(newTab).innerHTML;  
document.getElementById('first_View').innerHTML = newHTML; 

accord_menu();         
}

function accord_menu() {
  var acc = document.getElementsByClassName("accordion_f");
  var i; 

  for (i = 0; i < acc.length; i++) {
    acc[i].onclick = function(){
      this.classList.toggle("active");
      this.nextElementSibling.classList.toggle("show");
    } 
  } 
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

getElementById不能按预期工作?

来自分类Dev

sendRedirect()不能按预期工作

来自分类Dev

递归函数不能按预期工作

来自分类Dev

$ nin与$ elemMatch不能按预期工作

来自分类Dev

AutoResizeTextView不能按预期工作

来自分类Dev

arraylist不能按预期工作

来自分类Dev

jQuery slideDown不能按预期工作

来自分类Dev

递归IEnumerable不能按预期工作?

来自分类Dev

Javascript RegExp'*'不能按预期工作

来自分类Dev

终于不能按预期工作

来自分类Dev

whenAll()不能按预期工作

来自分类Dev

strtoul()不能按预期工作?

来自分类Dev

QGridLayout不能按预期工作

来自分类Dev

unset()不能按预期工作

来自分类Dev

:not()不能按预期工作

来自分类Dev

bcrypt nodejs不能按预期工作

来自分类Dev

NavigationManager不能按预期工作?

来自分类Dev

javascript:onclick =“ scrollWin()”不能按预期工作

来自分类Dev

bcrypt nodejs不能按预期工作

来自分类Dev

getElementById不能按预期工作?

来自分类Dev

rsync不能按预期工作

来自分类Dev

jQuery has()不能按预期工作

来自分类Dev

blockUI不能按预期工作

来自分类Dev

XmiCasDeserializer不能按预期工作

来自分类Dev

seekg()不能按预期工作

来自分类Dev

ArrayAdapter不能按预期工作

来自分类Dev

$(“#form”)。submit(); 不能按预期工作

来自分类Dev

:not()不能按预期工作

来自分类Dev

onclick不能按预期工作