对这个模糊的问题道歉,但我一直在绞尽脑汁为什么我的代码在两小时内没有工作,两小时后我终于开始工作了。只有我不知道为什么它现在有效。继承人的情景。
我有一个"人"具有人1,人2和人3的对象,其中有各种键。我有一个循环通过人对象的按钮,并将person1,person2等放入表格" row"。 (person1等在第一个" td"中各自都有一个单选按钮。)
然后我点击一个按钮,检查我是否选择了上面提到的一个单选按钮。按下按钮后,它再次循环通过对象,主要是因为我正在使用" document.getElementById"识别单选按钮。通过循环遍历people对象,我可以在下面:
for (var property in people) {
var radioButton = document.getElementById(property + "radio");
if (radioButton.checked === true) {
sessionStorage.setItem("macomCode", selectMacomField.value);
sessionStorage.setItem("displayName", people[property].displayName);
sessionStorage.setItem("dodId", people[property].edipi);
sessionStorage.setItem("ptc", people[property].ptc);
sessionStorage.setItem("email", people[property].email);
sessionStorage.setItem("emailServiceClass", people[property].serviceClass);
sessionStorage.setItem("mobileServiceClass", people[property].mobileServiceClass);
sessionStorage.setItem("rms", people[property].rms);
sessionStorage.setItem("journaling", people[property].journaled);
window.open("depo/WilliamDepoPage.html",'_blank');//'width = 930, height = 700'*/
break;
}
}
基本上上面的代码循环通过people对象检查是否检查了radioButton。然后,它将在people对象中找到的相应密钥存储到SessionStorage中,并打开一个窗口,其中将填充信息。中断确保代码在找到匹配后不会重复。
我用上面的代码注意到的事情是,只有当person1在场上时它才会起作用。因此,如果我在字段上只有person3,则会抛出&#34的错误;无法获得null" (指的是radioButton)。当我在场上只有person2时也是如此。但只要person1与person2和person3在场上,它就能完美运行。
经过一番修修补补后,我想出了这段代码:
for (var property in people) {
var radioButton = document.getElementById(property + "radio");
if (radioButton !== null) {
if (radioButton.checked === true) {
sessionStorage.setItem("macomCode", selectMacomField.value);
sessionStorage.setItem("displayName", people[property].displayName);
sessionStorage.setItem("dodId", people[property].edipi);
sessionStorage.setItem("ptc", people[property].ptc);
sessionStorage.setItem("email", people[property].email);
sessionStorage.setItem("emailServiceClass", people[property].serviceClass);
sessionStorage.setItem("mobileServiceClass", people[property].mobileServiceClass);
sessionStorage.setItem("rms", people[property].rms);
sessionStorage.setItem("journaling", people[property].journaled);
window.open("depo/WilliamDepoPage.html",'_blank');//'width = 930, height = 700'*/
break;
}
}
}
我添加的全部是:if (radioButton !== null) {
我现在可以自己拉取person3和person2,并且不会发生错误。我知道这会检查一个radioButton是否在屏幕上,但我不明白它在上述代码的整个方案中播放的内容。对我来说,如果" radioButton"存在于页面上执行代码。好吧,甚至在我输入if(radioButton !== null)
之前,radioButton已经在屏幕上,但是抛出一个错误,说radioButton是null。
对于很长的帖子感到抱歉,但有人可以告诉我if(radioButton !== null)
使这段代码有效吗?我很高兴它,我只是想知道为什么它会突然起作用。
感谢时间和帮助。
答案 0 :(得分:1)
因为您没有提供HTML内容。我猜,单选按钮列表的格式如下:
<input ... id="1radio">
<input ... id="2radio">
<input ... id="3radio">
for (var property in people)
表示i=0...2
,我们没有id="0radio"
的广播,对吗? :)
希望我的回答可以帮到你。