访问隐藏表格单元格的textContent

时间:2015-06-24 05:45:44

标签: javascript

我正在处理一个html表单,该表单仅显示在数据库中找到的带有提交值的数据元素的数据行。例如,如果在Seizures_Type'的数据库中找不到值,则将关闭下表行(style =" display:none"),如果出现则将显示是数据库中的值。

javascript用于连接表单上几个相似字段的值并存储在单个字段中,id =" medalert"。

当脚本运行时,如果它尝试访问处于display:none状态的字段,则会失败。

即使遇到这些隐藏元素,允许脚本完全运行的好方法是什么?

<a href="#" onClick="buildMedAlert();">Build</a>


<tr style="display:none"> 
    <td title="seizures type">Seizures Type</td>
    <td></td>
    <td id="par_med_seizures_type"></td>
    <td><input type="checkbox" id="chk_med_seizures_type"></td>
</tr>

<tr style="display:none"> 
    <td title="seizures type">Seizures Medication</td>
    <td></td>
    <td id="par_med_seizures_medication"></td>
    <td><input type="checkbox" id="chk_med_seizures_medication"></td>
</tr>



function buildMedAlert(){
     var retval = "";

    if (document.getElementById('par_med_seizures_type').textContent.length>0) {
        retval += "Type: " + document.getElementById('par_med_seizures_type').textContent;
    }

    if (document.getElementById('par_med_seizures_medication').textContent.length>0) {
        retval += "Medication: " + document.getElementById('par_med_seizures_medication').textContent;
    }

    document.getElementById('medalert').value=retval;
}

2 个答案:

答案 0 :(得分:0)

如果我添加缺少的字段medalert,它既不会在Chrome也不会在IE10中失败

&#13;
&#13;
function buildMedAlert() {
  var retval = "";

  if (document.getElementById('par_med_seizures_type').textContent.length > 0) {
    retval += "Type: " + document.getElementById('par_med_seizures_type').textContent;
  }
  if (document.getElementById('par_med_seizures_medication').textContent.length > 0) {
    retval += "Medication: " + document.getElementById('par_med_seizures_medication').textContent;
  }
  document.getElementById('medalert').value = retval;
}
&#13;
 <a href="#" onClick="buildMedAlert();">Build</a>

<table>
  <tr style="display:none">
    <td title="seizures type">Seizures Type</td>
    <td></td>
    <td id="par_med_seizures_type">Some type</td>
    <td>
      <input type="checkbox" id="chk_med_seizures_type">
    </td>
  </tr>

  <tr style="display:none">
    <td title="seizures type">Seizures Medication</td>
    <td></td>
    <td id="par_med_seizures_medication">Some med</td>
    <td>
      <input type="checkbox" id="chk_med_seizures_medication">
    </td>
  </tr>
</table>
<input type="text" id="medalert">
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你应该创建条件来检查行是否可见,给它一个ID(因为我不相信你想要处理代码中的每个元素)然后,确保检查元素是否是可见的,像这样:

var element = document.getElementById('element');
 if(element.style.display != 'none'){
}

问题是你无法访问隐藏元素的内容,因为它是隐藏的,因此,javascript无法识别它。你必须确保元素不被隐藏。