Javascript 尝试了解如何使用“解决”来解决单个菜单项;这";
我试图做的是像数组一样使用“this”来记录结果,这样每当我单击第一个列表项时,数字0就会记录在console.log中,没有预定义的变量,并且只使用一个函数Javascript 尝试了解如何使用“解决”来解决单个菜单项;这";,javascript,arrays,this,undefined,Javascript,Arrays,This,Undefined,我试图做的是像数组一样使用“this”来记录结果,这样每当我单击第一个列表项时,数字0就会记录在console.log中,没有预定义的变量,并且只使用一个函数 <ul class="menuList"> <li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Cordon Bleu</a><
<ul class="menuList">
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Cordon Bleu</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Stir Fry</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Thighs</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Fish Fillet</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Lasagna</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Pizza</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Salmon</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Spaghetti</a></li>
</ul>
<script type="text/javascript">
function openMenuItemAll(){
var menuImage = document.querySelectorAll(".menuImage");
console.log(this.menuImage);
}
</script>
函数openMenuItemAll(){
var menuImage=document.querySelectorAll(“.menuImage”);
console.log(this.menuImage);
}
当我试图根据菜单项的位置获取数组编号时,console.log中没有定义此值取决于函数的调用方式 事件处理程序函数的
值等于事件处理程序绑定到的元素
所以onclick=“this/*是元素*/”
在没有上下文的情况下调用的函数(例如,如果调用openMenuItemAll();
)具有此
等于未定义的
(除非您未能触发严格模式,在这种情况下,它将是窗口
)
旁白:
用于链接。如果你没有链接到任何地方,就不要使用它。禁止在链接中放置
首先,修复标记:
<ul class="menuList">
<li><button>›</button>Chicken Cordon Bleu</li>
然后在按钮上循环并将openMenuItemAll
函数绑定为事件处理程序
Array.from(buttons).forEach(
button => button.addEventListener("click", openMenuItemAll)
);
此
的值取决于函数的调用方式
事件处理程序函数的值等于事件处理程序绑定到的元素
所以onclick=“this/*是元素*/”
在没有上下文的情况下调用的函数(例如,如果调用openMenuItemAll();
)具有此
等于未定义的
(除非您未能触发严格模式,在这种情况下,它将是窗口
)
旁白:
用于链接。如果你没有链接到任何地方,就不要使用它。禁止在链接中放置
首先,修复标记:
<ul class="menuList">
<li><button>›</button>Chicken Cordon Bleu</li>
然后在按钮上循环并将openMenuItemAll
函数绑定为事件处理程序
Array.from(buttons).forEach(
button => button.addEventListener("click", openMenuItemAll)
);
您需要在函数中传递此
:onclick=“openMenuItemAll(此);
然后可以从数组中获取目标的索引
也就是说,只要您单击元素中的任意位置,onclick事件就会发生。如果您只想在单击按钮时触发事件,则需要将事件放在按钮内。由于按钮是li的子项,因此您需要传递this.parentElement
以传递to功能
<ul class="menuList">
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Cordon Bleu</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Stir Fry</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Thighs</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Fish Fillet</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Lasagna</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Pizza</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Salmon</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Spaghetti</a></li>
</ul>
<script type="text/javascript">
function openMenuItemAll(){
var menuImage = document.querySelectorAll(".menuImage");
console.log(this.menuImage);
}
</script>
此外,由于锚定标记并没有真正用于它的目的,所以可以完全删除它
在下面的代码片段中,我还删除了列表中的项目符号,因为按钮确实可以替代使用它们的需要
函数openMenuItemAll(目标){
const menuImage=document.queryselectoral(“.menuImage”);
const index=Array.prototype.indexOf.call(menuImage,target)
控制台日志(索引);
}
.menuImage{
列表样式:无;
}
您需要在函数中传递此
:onclick=“openMenuItemAll(此)代码>
然后可以从数组中获取目标的索引
也就是说,只要单击
元素中的任意位置,onclick事件就会发生。如果只希望在单击按钮时触发事件,则需要将事件放在按钮内。由于按钮是li的子项,因此需要传递this.parentElement
以将
传递给函数
<ul class="menuList">
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Cordon Bleu</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Stir Fry</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Chicken Thighs</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Fish Fillet</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Lasagna</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Pizza</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Salmon</a></li>
<li><a class="menuImage" onclick="openMenuItemAll();"><button>›</button>Spaghetti</a></li>
</ul>
<script type="text/javascript">
function openMenuItemAll(){
var menuImage = document.querySelectorAll(".menuImage");
console.log(this.menuImage);
}
</script>
此外,由于锚定标记并没有真正用于它的目的,所以可以完全删除它
在下面的代码片段中,我还删除了列表中的项目符号,因为按钮确实可以替代使用它们的需要
函数openMenuItemAll(目标){
const menuImage=document.queryselectoral(“.menuImage”);
const index=Array.prototype.indexOf.call(menuImage,target)
控制台日志(索引);
}
.menuImage{
列表样式:无;
}
window.onload=function(){
document.querySelector('ul')。addEventListener('click',showIndex,false);
}
函数显示索引(evt){
设tgt=evt.target;
让btns=this.querySelectorAll('button');
对于(i=0,ILN=BTNS长度;i < P>昆廷有你的答案,但也考虑使T