[js问题]DOM写出来的东西,取的时候取不到对象。为什么?

NqIceCoffee 2007-11-12 11:53:27
<html>
<head>
<title>附加检索条件</title>
</head>
<body>
<div style="font-size:12px;line-height:2.0em;">
<ul style="list-style:none;padding:0px;margin:0px;" id="Box">
</ul>
<input type="button" value="选择" onclick="FillValue();">
</div>
<script language="JavaScript">
<!--
function show(itemTexts, itemValues) {
var txtArr = itemTexts.split("@@@");
var valueArr = itemValues.split("@@@");
var n = txtArr.length;
for(var i=0; i<n; i++) {
document.getElementById("Box").appendChild(CreateItem(txtArr[i], valueArr[i]));
}
}

function CreateItem(itemText, itemValue) {
var li = document.createElement("li");
var chkBox = document.createElement("input");
chkBox.type = "CheckBox";
chkBox.name = "chk"
chkBox.value = itemValue;
var show = document.createElement("span");
show.name = "txt";
show.innerHTML = itemText;
li.appendChild(chkBox);
li.appendChild(show);
return li;
}

function FillValue () {
var texts = "";
var values = "";
var chk = document.getElementsByName("chk");
var txt = document.getElementsByName("txt");
var n = txt.length;
alert(n); //这里的n=0
for(var i=0; i<n; i++) {
if(chk[i].checked) {
texts += "," + txt[i].innerHTML;
values += "'" + chk[i].value + "'";
}
}
alert(texts + "\n" + values);
}

window.onload = function () {
var txts = "国际标准化组织@@@国际电工委员会@@@欧洲标准@@@美国国家标准学会@@@德国标准化学会@@@英国国家标准学会@@@日本工业标准@@@法国标准化协会@@@美国机械工程师协会@@@美国材料与实验协会@@@美国电气电子工程师学会@@@美国保险商实验所";
var values = "ISO@@@IEC@@@EN@@@ANSI@@@DIN@@@BS@@@JIS@@@NF@@@ASME@@@ASTM@@@IEEE@@@UL";
show(txts, values);
}
//-->
</script>
</body>
</html>


大家帮忙看一下。
...全文
156 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
it_mpf 2007-11-12
  • 打赏
  • 举报
回复
document.getElementById("Box") Box在那里?
JGood 2007-11-12
  • 打赏
  • 举报
回复
Dom要使用getElementsByTagName

getElementById
getElementsByName
在html中使用
NqIceCoffee 2007-11-12
  • 打赏
  • 举报
回复
自己搞定了

原来DOM写的元素,用getElementsByName是无法取到的(感觉上该方法好像只能取到在代码视图中能看的见的元素)。

修改方法

function FillValue () {
var texts = "";
var values = "";
var nodes = document.getElementById("Box").childNodes;
var n = nodes.length;
for(var i=0; i<n; i++) {
var li = nodes[i].childNodes;
if(li[0].checked) {
texts += "," + li[1].innerHTML;
values += " + '" + li[0].value + "'";
}
}
if(texts != "" && values != "")
alert(texts.substring(1) + "\n" + values.substring(3));
}
octverve 2007-11-12
  • 打赏
  • 举报
回复
自己下一个Antechinus JavaScript Editor,调试一下吧,吃饭了
NqIceCoffee 2007-11-12
  • 打赏
  • 举报
回复
别光顶

给出出主意阿
Rudolph 2007-11-12
  • 打赏
  • 举报
回复
顶一个!
NqIceCoffee 2007-11-12
  • 打赏
  • 举报
回复
THX 3 楼

给推荐的编辑器

感觉很不错。
NqIceCoffee 2007-11-12
  • 打赏
  • 举报
回复
恩。。5楼的方法可行
symbol441 2007-11-12
  • 打赏
  • 举报
回复
标签就是像<a>,<tr>,<ul>这种,不是name哈.LZ肯定是把他弄混淆着了..
symbol441 2007-11-12
  • 打赏
  • 举报
回复
var chk = document.getElementsByName("chk");
var txt = document.getElementsByName("txt");


document.getElementsByName()方法后面是给标签的名称,不是控件的name,就LZ的代码中根本就没有chk,txt标准的元素
当然取不出来了

如果楼主想根据ID名来取
直接就用document.getElementById(ID名)
it_mpf 2007-11-12
  • 打赏
  • 举报
回复
var chk = document.getElementsByName("chk");
var txt = document.getElementsByName("txt");
根本没那两个标签的!!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧