style =“display:none”无法正常工作

时间:2011-12-01 18:10:32

标签: html css struts2

我创建了一些操作来预先填充我可以为不同的jsp页面重用的列表。我需要能够使用javascript显示/隐藏这些列表。我使用了以下代码,但它无效。

我正在使用struts2和spring

的javascript

document.getElementById("hihDiv").style.display = 'none';
document.getElementById("hihDiv").style.display = '';

JSP

<tr id="hihDiv" style="display: none">
    <td class="leftAligned"><s:action name="HIHRef" executeResult="true" /></td>
</tr>

行动jsp

<s:select id="reviewContractor" size="5" name="reviewContractor" size="1"  list="reviewContractors"
                                label="Review Contractor" onchange="showReviewContractor(this.value)"/>

<s:select size="5" size="1" id="hih" list="hihs"  name="hih" label="HIH" />

列表预填充正常但是当我更改reviewContractor的选择时,它应该显示/隐藏hihDiv行并且它不起作用。由于<s:action>标记,我不确定它是否无法正常工作。当我使用带有jsp页面中的选项的select时javascript工作但我无法预先填充数据库中的列表。现在使用s:action标记,我可以预先填充列表,但显示/隐藏不起作用。

有什么建议吗?

这是我的javascript。有几个选项需要显示/隐藏,但我想先让它们工作。

function showReviewContractor(val){ 

    var value = parseInt(val);  
    alert(value);

    switch(value){

    case 0:
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("claimDiv").style.display = '';
        document.getElementById("racDiv").style.display = '';
        document.getElementById("macDiv").style.display = '';
        document.getElementById("certDiv").style.display = '';
        document.getElementById("permDiv").style.display = '';
        alert("all");
        break;
    case 1: //rac

        document.getElementById("claimDiv").style.display = '';
        document.getElementById("racDiv").style.display = '';
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("macDiv").style.display = 'none';
        document.getElementById("certDiv").style.display = 'none';
        document.getElementById("permDiv").style.display = 'none';
        alert("rac");

        break;
    case 2: //mac

        document.getElementById("claimDiv").style.display = '';
        document.getElementById("macDiv").style.display = '';
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("racDiv").style.display = 'none';       
        document.getElementById("certDiv").style.display = 'none';
        document.getElementById("permDiv").style.display = 'none';
        alert("mac");
        break;
    case 3: //cert

        document.getElementById("claimDiv").style.display = '';
        document.getElementById("certDiv").style.display = '';
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("racDiv").style.display = 'none';
        document.getElementById("macDiv").style.display = 'none';       
        document.getElementById("permDiv").style.display = 'none';

        break;
    case 4: //perm

        document.getElementById("claimDiv").style.display = '';
        document.getElementById("permDiv").style.display = '';
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("racDiv").style.display = 'none';
        document.getElementById("macDiv").style.display = 'none';
        document.getElementById("certDiv").style.display = 'none';

        break;
    /*case 5:
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("claimDiv").style.display = '';
        document.getElementById("racDiv").style.display = 'none';
        document.getElementById("macDiv").style.display = 'none';
        document.getElementById("certDiv").style.display = 'none';
        document.getElementById("permDiv").style.display = 'none';

        break;
    case 6:
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("claimDiv").style.display = 'none';
        document.getElementById("racDiv").style.display = 'none';
        document.getElementById("macDiv").style.display = 'none';
        document.getElementById("certDiv").style.display = 'none';
        document.getElementById("permDiv").style.display = 'none';
        break;
    case 7:
        document.getElementById("hihDiv").style.display = 'none';
        document.getElementById("claimDiv").style.display = 'none';
        document.getElementById("racDiv").style.display = 'none';
        document.getElementById("macDiv").style.display = 'none';
        document.getElementById("certDiv").style.display = 'none';
        document.getElementById("permDiv").style.display = 'none';

        break;
        */
    default:
        break;
    }
}

2 个答案:

答案 0 :(得分:2)

除非您明确将主题设置为“简单”,否则<s:select>标记将呈现自己的表行/单元格,从而创建无效的HTML。 (我必须检查S2表单标签是否必须显式嵌套在表单标签中,如S1中所示,我认为它可以正常工作,因为你没有创建伪造的HTML)。

<s:select (all your stuff, but add) theme="simple" />

我真的建议不要这样做 - 而是在操作中创建选择列表并将其直接暴露给JSP。

答案 1 :(得分:0)

尝试将表单样式放在jsp struts2表单中,并尝试查看如何调用该函数,因为可能你做错了