菜单栏Navigate -> File Structure
https://www.jetbrains.com/help/webstorm/viewing-structure-of-a-source-file.html
You can examine the structure of the file currently opened in the editor using the Structure tool window (Alt+7) or the Structure popup (Ctrl+F12).
Alt+7是固定在左侧栏,ctrl+F12是弹窗显示
以下的示例,
<tr> <td>Avatar</td> <td><input type="hidden" name="ctl00$cphMain$ucProfile$Avatar$hffulList" id="ctl00_cphMain_ucProfile_Avatar_hffulList" value="[{"FileName":"3004057.png","Size":"1550","ContentType":"image/png","PhysicalName":"7778181a-1dad-4898-9c21-df416f812405.png","NewPhysicalName":null,"FileuploadId":"0","FilePath":null}]"> <script type="text/javascript">$(function () { function JsonToString(json) { var str = ''; for (var key in json) { if (json[key] == null) { str = str + ',"' + key + '":' + json[key]; } else { str = str + ',"' + key + '":' + '"' + json[key] + '"'; } } if (str.length > 0) { str = str.substring(1); str = '{' + str + '}'; } return str; }; function JsonArrayToString(jsonAry) { var str = ''; var strItem; for (var i = 0; i < jsonAry.length; i++) { strItem = JsonToString(jsonAry[i]); if (strItem.length > 0) { str = str + ',' + strItem; } } if (str.length > 0) { str = str.substring(1); str = '[' + str + ']'; } return str; }; $(document).on('click', '.LISA_FileuploadResultFileAction', function () { var $trDel = $(this).parent().parent(); var jsonAry = jQuery.parseJSON($('#ctl00_cphMain_ucProfile_Avatar_hffulList').val()); var jsonItem = jsonAry[$trDel.index()]; jsonAry.splice($trDel.index(), 1); $('#ctl00_cphMain_ucProfile_Avatar_hffulList').val(JsonArrayToString(jsonAry)); $trDel.remove(); if ($('#ctl00_cphMain_ucProfile_Avatar_hffulList').val().length = 0) $('#Avatar_Result').hide(); }); $('#Avatar').fileupload({ maxChunkSize: 1048576, paramName: '1f041c67-b5db-4599-a9ab-3f1614a651b5', url: 'http://172.31.212.20/LISA_60_Dev_BackOffice/Pages/jQueryHandler.ashx', dataType: 'json', add: function (e, data) { $('#Avatar_ProcessContent').css('width', '0%').html(''); $('#Avatar_ProcessWrap').show(); var acceptFileTypes = /(\.)(png|gif|jpeg|jpg|pdf|bmp|xls|xlsx|doc|docx|ppt|pptx|zip|rar)$/i; var ext = data.originalFiles[0]['name'].substr(data.originalFiles[0]['name'].lastIndexOf(".")).toLowerCase(); if (ext.length > 0 && acceptFileTypes.test(ext)) { data.submit(); } else { $('#Avatar_ProcessWrap').hide(); alert('Not an accepted file type'); } }, done: function (e, data) { var newItem = data.result; $('#Avatar_ProcessWrap').hide(); if ($('#ctl00_cphMain_ucProfile_Avatar_hffulList').val().length == 0) { var newItemStr = JsonToString(newItem); newItemStr = '[' + newItemStr + ']'; $('#ctl00_cphMain_ucProfile_Avatar_hffulList').val(newItemStr); } else { var jsonAry = jQuery.parseJSON($('#ctl00_cphMain_ucProfile_Avatar_hffulList').val()); jsonAry.push(newItem); $('#ctl00_cphMain_ucProfile_Avatar_hffulList').val(JsonArrayToString(jsonAry)); } var action = ''; action = '<td><a href="javascript:void(0);" class="LISA_FileuploadResultFileAction">Delete</a></td>'; $('#Avatar_Result').append('<tr><td><a href="/LISA_60_Dev_BackOffice/FileTemps/' + newItem.PhysicalName + '" target="_black">' + newItem.FileName + '</a></td><td>' + newItem.Size + ' Byte</td><td>' + newItem.ContentType + '</td>' + action + '</tr>'); $('#Avatar_Result').show(); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); $('#Avatar_ProcessContent').css('width', progress + '%').html(progress + '%'); }, }); });</script> <input id="Avatar" type="file"> <div id="Avatar_ProcessWrap" class="LISA_FileuploadProcessWrap" style="display: none;"> <div id="Avatar_ProcessContent" class="LISA_FileuploadProcessContent" style="width: 100%;">100%</div> </div> <table id="Avatar_Result" class="gridview" style=""> <tr> <td><a href="/LISA_60_Dev_BackOffice/FileTemps/7778181a-1dad-4898-9c21-df416f812405.png" target="_black">3004057.png</a></td> <td>1550 Byte</td> <td>image/png</td> <td><a href="javascript:void(0);" class="LISA_FileuploadResultFileAction">Delete</a></td> </tr> </table> </td> </tr>
tr有两个td
第二个td包含5个元素,分别是
input type是hidden
script type是JavaScript
input type 是file,一个按钮,弹窗选择文件
div 显示进度条
table 显示上传过的文件