javascript隱藏和顯示元素
阿新 • • 發佈:2018-11-06
當前希望寫一個單選框,選中“paste”則顯示貼上框,選中“upload”則提示選擇檔案。
因為這兩種情況只是顯示不同,所以只需要用javascript來進行顯示和隱藏。
最後的結果大概這樣:
初始時,兩個都不選中,所以貼上框和上傳按鈕都不存在。
選中Paste Input:貼上框彈出,有刪除按鈕和行數計數。(這個在下一篇blog中更新)
選中Upload File:上傳按鈕出現。(這個中文顯示貌似跟隨系統,再更新我會改掉)
程式碼其實naive,如下:
function onClickInputMethod() { var show = "";var apm = document.getElementsByName("input_method_option"); for (var i = 0; i < apm.length; i++) { if (apm[i].checked) show = apm[i].value; } switch (show) { case "0": document.getElementById("paste_textarea").style.display = "block"; document.getElementById("upload_file").style.display = "none"; break; case "1": document.getElementById("paste_textarea").style.display = "none"; document.getElementById("upload_file").style.display = "block"; break; default: document.getElementById("paste_textarea").style.display = "none"; document.getElementById("upload_file").style.display = "none"; break; } }
重點是display寫none的時候是隱藏,寫block的時候是顯示:)
我覺得也就是我腦殘到寫反了:)
另外,在html中,貼上框和上傳檔案都要寫,並且需要把display設定為none來隱藏。這跟default是無關的,
因為初始時並未點選,所以沒有onClickInputMethod()的處理:)
下面貼html程式碼
<div class="form-group"> <label for="input_method" class="col-sm-2 control-label">Input Method</label> <div class="radio col-sm-10" name="input_method"> <label><input type="radio" name="input_method_option" value="0" onclick="onClickInputMethod(); checked" />Paste Input</label> <label><input type="radio" name="input_method_option" value="1" onclick="onClickInputMethod()" />Upload File</label> <!--hide when upload checked--> <div class="form-group" style="margin:0.5% 0.5% 1% 0%; display: none;" id="paste_textarea"> <textarea class="form-control" name="paste_input" onkeypress="handleRowNum(event)" id="paste_input" rows="4"></textarea> <span> <button type="button" style="margin-top:0.5%;" class="btn btn-primary" onclick="onClickDelete()">Delete</button> <label>Target Count: <span id="target_count">0</span></label> </span> </div> <!--hide when paste checked--> <div class="form-group" style="margin:0.5% 0.5% 1% 0%; display: none;" id="upload_file"> <input type="file" name="files" /> </div> </div> </div>
// 這個程式碼插入得真醜:)