Javascript 如何根据条件选择文本区域的数量

Javascript 如何根据条件选择文本区域的数量,javascript,html,jsf,Javascript,Html,Jsf,根据所选选项的类型,我希望显示1或3个文本区域,即。, 如果选择了选项“mc”,我想显示3个文本区域。 我正试图用Javascript实现这一点,但每个选项都会显示3个文本区域。我认为JS函数不起作用。你能告诉我错误在哪里吗 谢谢 代码: <head> <link href="./css.css" rel="stylesheet" type="text/css" /> </head> <body>

根据所选选项的类型,我希望显示1或3个文本区域,即。, 如果选择了选项“mc”,我想显示3个文本区域。 我正试图用Javascript实现这一点,但每个选项都会显示3个文本区域。我认为JS函数不起作用。你能告诉我错误在哪里吗

谢谢

代码:

<head>           
    <link href="./css.css" rel="stylesheet" type="text/css" />
</head>
<body>          
    <h:form>                
        <script type="text/javascript"> 
              function selectans(qtype)  {                         
                if (qtype == "mc")
                {
                    alert("In MC type");
                    document.getElementById("formId:editor3").style.display = "block";
                    document.getElementById("formId:editor4").style.display = "block";
                    //document.form.editor3.disabled = false;
                    //document.form.editor4.disabled = false;                            
                } 
                else {

                    document.getElementById("formId:editor3").style.display = "none";
                    document.getElementById("formId:editor4").style.display = "none";
                    //document.form.editor3.disabled = true;
                    //document.form.editor4.disabled = true;
                }
              }                                                              
      </script>

       Question Type: 
       <h:selectOneMenu  id="qtype" value ="#{quizBean.qtype}" onchange="selectans(qtype) ">
           <f:selectItem id="desc" itemLabel="Descriptive Type" itemValue="desc" />
           <f:selectItem id="fill" itemLabel="Fill up the Blanks" itemValue="fill" />
           <f:selectItem id="mc" itemLabel="Multiple Choice" itemValue="mc"  />
           <f:selectItem id="tf" itemLabel="True/False" itemValue="tf" />
       </h:selectOneMenu>

       Question:                              <h:inputTextarea id="editor1" value="#{quizBean.question}" rows="20" cols="75" /> <br></br> 

       Answer:
           <h:inputText id ="editor2" value="#{quizBean.answerChoice2}"  />
           <h:inputText id ="editor3" value="#{quizBean.answerChoice2}"  />
           <h:inputText id ="editor4" value="#{quizBean.answerChoice3}"  />                                                         

            <h:commandButton value="Submit" action="#{quizBean.addQuestion}" />
</h:form>        

</body>

您的事件函数应该是这样的
onchange=“selectans('qtype')”
通过这种方式,只传递一个字符串作为参数

添加Display:None属性,加载时只显示第一个textarea框,然后单击调用基于clickI的其他文本区域,我在CSS中添加了display:none属性,并在HtmlTanks的头部链接了CSS以获得建议。按建议做了更改。它正在进入JS函数,但是没有选择另外两个文本区域。我不熟悉jsf。你能用这些文档进行测试吗?getElementById(“editor3”).style.display document.getElementById(“editor4”).style.display,这也不正确:(它应该可以工作。你的函数selectans是否在值更改期间被调用。它正在进入函数。它只是在需要时没有隐藏文本区域。)。