我正在处理一个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;
}
答案 0 :(得分:0)
如果我添加缺少的字段medalert,它既不会在Chrome也不会在IE10中失败
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;
答案 1 :(得分:0)
你应该创建条件来检查行是否可见,给它一个ID(因为我不相信你想要处理代码中的每个元素)然后,确保检查元素是否是可见的,像这样:
var element = document.getElementById('element');
if(element.style.display != 'none'){
}
问题是你无法访问隐藏元素的内容,因为它是隐藏的,因此,javascript无法识别它。你必须确保元素不被隐藏。