2015-12-16 74 views
6

enter image description here如何删除TD无任何标识

你好,我想删除“你在军中服役?”如果答案是“否”,但是当它会显示“是”时,“否”。

无论我都试过,但它不工作

<script type="text/javascript"> 
(function(){ 
    for(i = 0; (a = document.getElementsByTagName("td")[i]); i++){ 
    if(document.getElementsByTagName("span")[i].innerHTML.indexOf('Have you served in the military') > -1){ 
    document.getElementsByTagName("td")[i].style.display = "none"; 
    } 
    } 
})(); 
</script> 
+6

你可以找到与ID,然后查找其父​​并将其删除。 – sagar43

+0

似乎工作完全正常 - > ** https://jsfiddle.net/4g7rxm43/** – adeneo

回答

0

你可以得到所有的TD元素,如你已经做了,比进去他们span元素:

var tds = document.getElementsByTagName('TD'); 
for (var i = 0, l = tds.length; i != l; ++i) { 
    var spans = tds[i].getElementsByTagName('SPAN'); 
    for (var j = 0, l2 = spans.length; j != l2; ++j) { 
     var span = spans[j]; 
     if ((span.textContent = span.innerText).indexOf('Have you served in the military') != -1) { 
      span.style.display = 'none'; 
      break; 
     } 
    } 
} 

编辑: OP想只删除跨度是否存在与内容的TD“否”(也删除TD元素)

var tds = document.getElementsByTagName('TD'); 
var tdsLength = tds.length; 

var answerNoFound = false; 
for (var i = 0; i != tdsLength; ++i) { 
    var td = tds[i]; 
    if ((td.textContent = td.innerText) == 'No') { 
     td.style.display = 'none'; 
     answerNoFound = true; 
     break; 
    } 
} 

if (answerNoFound) 
    for (var i = 0; i != tdsLength; ++i) { 
     var spanFound = false; 
     var spans = tds[i].getElementsByTagName('SPAN'); 
     for (var j = 0, l = spans.length; j != l; ++j) { 
      var span = spans[j]; 
      if ((span.textContent = span.innerText).indexOf('Have you served in the military') != -1) { 
       span.style.display = 'none'; 
       spanFound = true; 
       break; 
      } 
     } 
     if (spanFound) 
      break; 
    } 
+0

如果答案是“否”,我必须删除问题和答案。 “不”也是TD,但没有任何的ID后,我不得不删除这两个 –

+0

在上传的图片只有与内容“是”一个TD元素,但我会编辑我的答案... – DavidVollmers

0

您可以使用该元素的子元素,或者只是执行查找替换,甚至隐藏并显示。

0

它看起来就像你有一个申请表,并document大概有跨度,一些td元素之外,这样你就不会得到spanstd正确选择。

因此,当您比较span的内容时,很可能不是span,它位于您的环形td内。

<script type="text/javascript"> 
    (function(){ 
     for(i = 0; (a = document.getElementsByTagName("td")[i]); i++){ 
     if(a.getElementsByTagName("span")[0].innerHTML.indexOf('Have you served in the military') > -1){ 
      a.style.display = "none"; 
     } 
     } 
    })(); 
</script> 

我改变了if语句来选择span您的循环td内部,也应该这样做。