我正在使用switch语句根据下拉选项更改标签的显示。
我有一个id为'TitleBox'的div和一个id为'generatePId'的嵌套'a'。在我的switch语句中,当我使用document.getElementById选择'TitleBox'时,它找不到'generatePId'而我得到了
Unable to get property 'style' of undefined or null reference
当我删除选择'TitleBox'的行时,会找到'generatePId'。
<div id="TitleBox" class="CellTitle" style="width:40px"> <a href="javascript:generateP();" title="xxx." id="generatePId" name=
"generatePId">Generate</a></div>
function onSelectCombo(){
var txt = var.getSelectedText();
switch(txt) {
case "A":
document.getElementById('generatePId').style.display='none';
break;
case "B":
document.getElementById('generatePId').style.display='none';
break;
case "C":
document.getElementById('TitleBox').innerHTML = "Number";
document.getElementById('generatePId').style.display='inline';
break;
default:
document.getElementById('generatePId').style.display='inline';
}
}
答案 0 :(得分:0)
因为你用链接覆盖了div。您应该在TitleBox div中创建一个span,并设置span的innerHtml而不是div。
答案 1 :(得分:0)
做的时候
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(MyApplication.class)
@WebIntegrationTest
public class ClassATest {
@Test
public void testGetMeSomeValue() {
ClassA classA = new ClassA();
Assert.assertSame("Received expected response", classA.getMeSomeValue(6025), 2345);
}
}
您正在使用&#34; Number&#34;替换TitleBox中的内部HTML。但是,内部HTML恰好是你的&#34; generatePId&#34;锚元素。附加&#34; Number&#34;的解决方法;文字可能是:
document.getElementById('TitleBox').innerHTML = "Number";
答案 2 :(得分:0)
document.getElementById('TitleBox').innerHTML = "Number"; //this line
//changes your DOM to <div foo='bar' ...> Number </div>, so
//the below line will never work as you expect.
//you should do x.innerHTML += "Number"; if it fits your needs
document.getElementById('generatePId').style.display='inline';
答案 3 :(得分:0)
您可以使用“a”上的类找到嵌套元素,因此首先找到div,然后找到类对象。 getElementsByClassName返回一个元素列表,因为你只有“a”,索引就是0:
var targetDiv = document.getElementById("TitleBox").getElementsByClassName("classfora")[0];
希望它有所帮助!!