无法通过id获取HTML元素

时间:2016-05-11 06:47:44

标签: javascript jquery html

我试图从'选择'中检索所选值。元素通过JavaScript。我甚至无法使用jQuery或document.getElementById()从DOM中获取元素。 这是我的代码:

   function getDropdown(headerText, options, id) {
      var container = document.createElement('div');
      container.setAttribute('class', 'nfvo-drop-down-container');

      var dd = document.createElement('select');
      $(dd).attr('id', id);
      for(var val in options) {
          $('<option />', {value: val, text: options[val]}).appendTo(dd);
      }

      if(headerText) {
          var span = document.createElement('span');
          span.setAttribute('class', 'panel-header');
          span.appendChild(document.createTextNode(headerText));
          container.appendChild(span);
      }

      container.appendChild(dd);
      return container;
   }
   var dd = getDropDown('My dropdown', [1,2,3,4], 'ddID);
   var e = document.getElementById('ddID');
   var e2 = $('#ddID');
   var e3 = $('#ddID').val();
   var e4 = $('#ddID').text();

如果我是console.log这些值,我会得到这些结果:

console.log(e) -> 'null'
console.log(e2) -> <Got the element>
console.log(e3) -> 'undefined'
console.log(e4) -> <Nothing, just a blank>

关于可能导致此问题的任何想法? 这段代码位于&#39;然后&#39;功能调用例如:

$.when(...).then(function(...)
   <Here is the code>
);

编辑:帖子中有一个拼写错误,现已修复。这不是我问题的根源。

我还应该提一下,我通过Dojo工具包将此div添加到ContentPane中,我可以通过chrome中的检查工具看到DOM中的下拉列表。

2 个答案:

答案 0 :(得分:3)

使用document.getElementById('ddID')不会获得选择框对象 因为您没有将对象添加到文档中的任何对象 您将通过使用dd.childNodes [1]

从dd对象中获取选择框对象

答案 1 :(得分:0)

document创建一个带有该id的元素,将其放入div中,然后返回div。

它永远不会将任何元素添加到{{1}}中的任何元素。

因此,当您在文档中搜索具有匹配ID的元素时,它就不存在。