1. 程式人生 > >javascript隱藏和顯示元素

javascript隱藏和顯示元素

當前希望寫一個單選框,選中“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>

// 這個程式碼插入得真醜:)