尝试使用document.getElementById获取父ID和子ID。尝试选择

时间:2016-07-25 15:18:31

标签: javascript html getelementbyid getelementsbyclassname

我正在使用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';
   } 
  }

4 个答案:

答案 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];

希望它有所帮助!!