我创建了一个这样的 html:
<body onload = callAlert();loaded()>
<ul id="thelist">
<div id = "lst"></div>
</ul>
</div>
</body>
callAlert()
在这里:
function callAlert()
{
listRows = prompt("how many list row you want??");
var listText = "List Number";
for(var i = 0;i < listRows; i++)
{
if(i%2==0)
{
listText = listText +i+'<p style="background-color:#EEEEEE" id = "listNum' + i + '" onclick = itemclicked(id)>';
}
else
{
listText = listText + i+ '<p id = "listNum' + i + '" onclick = itemclicked(id)>';
}
listText = listText + i;
//document.getElementById("lst").innerHTML = listText+i+'5';
}
document.getElementById("lst").innerHTML = listText+i;
}
在 callAlert()
内, 我在 <p>
标签内创建了 id runtime,在 for 循环的最后,我设置了这样的段落。 document.getElementById("lst").innerHTML = listText+i;
现在,当单击 listItem
时我很困惑,然后如何访问所选项目的值。
我正在使用这个:
function itemclicked(id)
{
alert("clicked at :"+id);
var pElement = document.getElementById(id).value;
alert("value of this is: "+pElement);
}
但获得价值为 undefined 。任何帮助将不胜感激。
原文由 Narendra Pal 发布,翻译遵循 CC BY-SA 4.0 许可协议
伙计,你真的应该在你的 CodingStyle 上努力。另外,编写简单、干净的代码。
首先,html 代码应该如下所示:
没有 div 或类似的东西。
ul
和ol
li
结合使用。此外,您应该始终以正确的顺序关闭 html 标签。否则,就像在你的考试中一样,你有不同的开始和结束标签。 (结束div
在你的 html-example 的第 5 行中没有引用开始的 div-tag)…这是固定代码:
您可以观看此 小提琴 中的工作示例。
问题是:
this.id
提交所点击项目的 ID,就像@Varada 已经提到的那样。.toString()
将数字解析为字符串div
包装在ul
标签中的容器。天啊。顺便说一句:永远不要检查某事。是
0
使用==
符。最好始终使用===
符。在 这里 阅读问题顺便说一句++:我不知道什么
value
你想在你的itemClicked()
函数中阅读。我没有测试它是否会读取innerHTML
但通常,您只能从之前写入信息的位置读取信息。在此示例中,value
我猜应该是空的。希望我没有忘记任何事情。如您所见,代码现在可以正常工作。如果您有任何其他问题,请直接提问。
干杯!