javascript中的索引值
我有以下代码:javascript中的索引值,javascript,indexing,Javascript,Indexing,我有以下代码: <script type="text/javascript" > function showAlert() { alert("I am clicked"+this.innerHTML+this.index); } window.onload = function one() { var a1 = [1,2,3]; for (var i=0;i<a1.length;i++) {
<script type="text/javascript" >
function showAlert()
{
alert("I am clicked"+this.innerHTML+this.index);
}
window.onload = function one()
{
var a1 = [1,2,3];
for (var i=0;i<a1.length;i++)
{
var p = document.createElement('p');
p.innerHTML = a1[i];
p.onclick = showAlert;
document.body.appendChild(p);
}
console.log("I am called");
}
</script>
函数showAlert()
{
警报(“我被点击”+this.innerHTML+this.index);
}
window.onload=函数一()
{
var a1=[1,2,3];
对于(var i=0;i
this.innerHTML警告单击的元素的值,但this.index显示未定义
这是因为DOM元素没有索引
属性
如果要使用索引(我假设您正在谈论创建段落的I
值),可以将其存储在DOM元素的data-*
属性中:
// In the loop creating the paragraphs...
p.setAttribute("data-index", i);
…然后通过getAttribute
使用它:
alert("I am clicked"+this.innerHTML+this.getAttribute("data-index"));
从技术上讲,您也可以使用“expando”属性:
// In the loop creating the paragraphs...
p.myReallyUniqueName = i;
…然后使用它:
alert("I am clicked"+this.innerHTML+this.myReallyUniqueName);
…但这样做通常不被认为是最佳做法,尤其是因为您必须小心,不要使用稍后可能用于DOM中其他内容的名称(例如,我会远离index
)data-*
属性是为此类特殊信息明确保留的。在您的示例中,此引用paragrah元素。因此它没有任何属性索引
查找单击索引的一种方法是将其作为段落属性传递,如下所示:
function showAlert(){
alert("I am clicked"+this.innerHTML+this.getAttribute('index'));
}
window.onload = function one(){
var a1 = [1,2,3];
for (var i=0;i<a1.length;i++) {
var p = document.createElement('p');
p.innerHTML = a1[i];
p.onclick = showAlert;
p.setAttribute("index", i); // Set the attribute index to <p>
document.body.appendChild(p);
}
console.log("I am called");
函数showAlert(){
警报(“我被点击了”+this.innerHTML+this.getAttribute('index'));
}
window.onload=函数一(){
var a1=[1,2,3];
对于(var i=0;i我可以建议您使用jQuery解决方案。您可以使用$(this).index()获取元素的索引。
希望这能有所帮助。在您的showart
函数中,这个
表示一个没有任何索引
属性的html对象。您应该将数组索引值存储在html元素的id
属性中,或者存储在data XXX
属性中。谢谢,但我希望代码保持简单。因此,我将d使用set和get。@user2567857:对。这是我的第一个建议。我知道jquery,所以我明确建议使用javascript