Javascript 自定義輸出

緣由

? 前段時間再看了一些javascript的學習資料,也寫的一些demo,在輸出的時候一般都用alert,但這個方法會打斷函數運行,用起來不是很好.還有就是console.log這個方法,這種方法原來一直以為只能在FireFox上面才能用,現在才發現主流瀏覽器都支持.但我的這個插件已經寫的差不多了,所以我還是把它寫出來,讓大家共同學習一下.

DOM結構

? 由于只是對結果的簡單輸出,所以我選擇了textarea存放.再給textarea加層div用于定位.同時加了4個控制按鈕(最小化,最大化,清空,關閉).

function createConsole() {//this:consoleClass的實例(這個也就是this用法的一個體現)var self = this;if (self.divConsoleContent != null && self.txtConsoleContent != null) {if (self.divConsoleContent.style["display"] == "none") {self.divConsoleContent.style["display"] = "block";setStyle(self.divConsoleContent.style, options.maxSizeCss);}return;}var body = document.getElementsByTagName("body")[0];var div = document.createElement("div");div.setAttribute("id", "divConsoleContent");setStyle(div.style, options.maxSizeCss);var txt = document.createElement("textarea");txt.setAttribute("id", "txtConsoleContent");setStyle(txt.style, options.txtCss);txt.setAttribute("readonly", "readonly");var btnMax = document.createElement("button");var btnMin = document.createElement("button");var btnClear = document.createElement("button");var btnHidden = document.createElement("button");setStyle(btnMax.style, options.buttonCss);setStyle(btnMin.style, options.buttonCss);setStyle(btnClear.style, options.buttonCss);setStyle(btnHidden.style, options.buttonCss);btnMax.innerHTML = "\u005b\u005b\u005d\u005d"; //[[]]btnMax.innerText = "\u005b\u005b\u005d\u005d";btnMin.innerHTML = "\u002d"; //-btnMin.innerText = "\u002d";btnClear.innerHTML = "\u007c"; //|btnClear.innerText = "\u007c";btnHidden.innerHTML = "\u00d7"; //xbtnHidden.innerText = "\u00d7";btnMin.onclick = function () {setStyle(self.divConsoleContent.style, options.minSizeCss);};btnMax.onclick = function () {setStyle(self.divConsoleContent.style, options.maxSizeCss);}btnClear.onclick = function () {options.currentText = "";self.txtConsoleContent.value = "";}btnHidden.onclick = function () {//
                setStyle(self.divConsoleContent.style, { display: "none" });}document.body.appendChild(div);div.appendChild(btnMin);div.appendChild(btnMax);div.appendChild(btnClear);div.appendChild(btnHidden);div.appendChild(txt);self.divConsoleContent = div;self.txtConsoleContent = txt;};

數據處理

? 數據處理是我只是簡單的進行了字符串拼接,并沒有對數據顯示格式還轉義字符進行處理,對于這些大家可以用JSON2進行處理,下面的例子用也有用到.

//時間格式的處理借鑒了json2function f(n) {// Format integers to have at least two digits.return n < 10 ? '0' + n : n;}function formatDate(val) {return isFinite(val.valueOf())? val.getUTCFullYear() + '-' +f(val.getUTCMonth() + 1) + '-' +f(val.getUTCDate()) + 'T' +f(val.getUTCHours()) + ':' +f(val.getUTCMinutes()) + ':' +f(val.getUTCSeconds()) + 'Z': null;}//基本數據類型function formatMetaData(val) {var res;if (val instanceof Date) {res = formatDate(val)if (res === null){ res = "null"; }}else if (typeof (val) === "undefined") {res = "undefined";}else if (val === null) {res = "null";}else if (typeof (val) === "string") {res = '"' + val + '"';}else {res = val.valueOf();}return res;}//Objectfunction formatObj(obj) {var res = "{";if (obj instanceof Date) {obj = formatDate(obj);if (obj != null) {return obj;}}if (obj === null) {return "null";}for (var p in obj) {res = res + "\"" + p + "\":" + format(obj[p], false) + ",";}res = res.substr(0, res.length - 1);res = res + "}";return res;}//所有數據類型處理的入口(blnImport是否是入口)function format(args, blnImport) {var res = "";if (blnImport == true) {if (args.length == 0)return "";else if (args.length == 1) {args = args[0];}}if (args instanceof Array) {var arr = [];for (var i = 0; i < args.length; i++) {arr.push(format(args[i], false));}res = "[" + arr.join(",") + "]";}else if (typeof (args) === "object") {res = formatObj(args);}else {res = formatMetaData(args);}return res;}

調用

<head><title>Barlow Console</title><script src="barlow.console.js" type="text/javascript"></script><script src="json2.js" type="text/javascript"></script><script type="text/javascript" charset="uft-8">function testPrint() {//基本數據類型var a = "test";var e;barlow.console.printline(e);barlow.console.printline(null);barlow.console.printline(1);barlow.console.printline(11.1);barlow.console.printline(true);barlow.console.printline(a);barlow.console.printline(1 / 0);barlow.console.printline(new Date())barlow.console.printline("----------------")//數組
            barlow.console.printline([a, a]);//Object
            barlow.console.printline({ "a": 1, "b": { "a": "abcfaa" }, "bac": { a: [1, 2, 3, 4]} });//JSON2
            barlow.console.printline("JSON2");barlow.console.printline(JSON.stringify({ "a": 1, "b": { "a": "abcfaa" }, "bac": { a: [1, 2, 3, 4]} }));barlow.console.printline("JSON2");barlow.console.printline(JSON.stringify({ "a": 1, "b": { "a": "abcfaa" }, "bac": { a: [1, 2, 3, 4]} }, {},4));}</script>
</head>
<body><input type="button" value="Test" onclick="testPrint()" /><div style="height: 2000px;"></div>
</body>
</html>

結果為

image

? 這個js插件目前只支持ie8及以上,但我覺得已經夠用了,怎么說微軟今年也不支持xp了,所以這個插件我覺得還是可以作為學習js或者調試的時候使用.

寫的后面的話

? 在園子里逛了一年多了,學了多少東西.同時看見各大位大牛寫的文章那是相當的佩服.在這我也小露一手,同時也希望往后能夠堅持下來,將自己的學習的東西還有一些心得能夠用自己的文字記錄下來.

下載

轉載于:https://www.cnblogs.com/gangtianci/p/3520173.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448310.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448310.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448310.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

不要打2歲內和6歲后的孩子 父母必看

一位媽媽說&#xff1a;“孩子經常無理取鬧&#xff0c;到超市就要買這買那&#xff0c;不給買就坐在地上哭鬧。到別人家去就亂翻亂動&#xff0c;還會到人家沙發上亂蹦&#xff0c;無論你怎么說&#xff0c;孩子都不聽話。每次我都會氣不打一處來&#xff0c;回到家就痛打一頓…

設計模式之開放封閉原則

以下皆是個人理解如有不對請留言指出&#xff0c;謝謝&#xff01; 我就代碼提出我自己個人的看法&#xff1a; 正常定義一個類例如銀行工作員&#xff0c;他可以執行存款&#xff0c;付款和轉賬功能&#xff0c;如果在現有功能上我想添加貸款功能&#xff0c;需要在類中添加…

[Git高級教程(二)] 遠程倉庫版本回退方法

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1 簡介 最近在使用git時遇到了遠程分支需要版本回滾的情況&#xff0c;于是做了一下研究&#xff0c;寫下這篇博客。 2 問題 如果提交了…

uplift model學習筆記

一、解決的問題&#xff1a; 通常的 Propensity Model 和 Response Model 只是給目標用戶打了個分&#xff0c;并沒有確保模型的結果可以使得活動的提升最大化&#xff1b;它沒有告訴市場營銷人員&#xff0c;哪個用戶最有可能提升活動響應&#xff1b; 因此&#xff0c;需要另…

必須看透的50個錯覺 人生要看透而不看破!

我們應該感謝命運的多喘&#xff0c;是它用歷練使一顆脆弱心的漸漸變得堅強&#xff0c;變得對一切都充滿了向往。無可否認&#xff0c;只有真正的經歷了一些事物之后&#xff0c;你才會對人生看得更加透徹&#xff0c;才會對世間真情感悟的更加真切。 1、個人只能被現實改變…

設計模式之依賴倒置原則

在傳統的過程式中&#xff0c;上層依賴于底層&#xff0c;當底層變化&#xff0c;上層也得跟著做出相應的變化。這就是面向過程的思想&#xff0c;弊端就是導致程序的復用性降低并且提高了開發的成本。 而面向對象的開發則很好的解決了這個問題&#xff0c;讓用戶程序依賴于抽象…

@Transactional 詳解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 Transactional 是聲明式事務管理 編程中使用的注解 1 .添加位置 1&#xff09;接口實現類或接口實現方法上&#xff0c;而不是接口類中…

LiveGBS高性能GB28181國標流媒體服務流傳輸模式支持UDP、TCP被動、TCP主動模式

LiveGBS國標(GB28181)流媒體服務軟件&#xff1a; 提供用戶管理及Web可視化頁面管理&#xff1b; 提供設備狀態管理&#xff0c;可實時查看設備是否掉線等信息&#xff1b; 實時流媒體處理&#xff0c;PS&#xff08;TS&#xff09;轉ES&#xff1b; 設備狀態監測、云臺控制、錄…

通過人行橫道線

學車中的通過人行橫道線 人行橫道線&#xff0c;俗稱斑馬線&#xff0c;是由一條一條的白色線組成的&#xff0c;主要是用來讓行人穿越馬路的。 駕駛員駕駛車輛通過人行橫道時應該減速緩行&#xff0c;注意禮讓行人。 考核要求 當駕車進入路面有施劃人行橫道線的&#xf…

python學習-38迭代器和生成器

迭代器和生成器---- 迭代器協議和for循環工作機制1.迭代器協議&#xff1a;對象必須提供一個next方法&#xff0c;執行該方法要么返回迭代中的下一項&#xff0c;要么引起一個Stoplteration異常&#xff0c;以終止迭代&#xff08;只能往后走&#xff0c;不能往前走&#xff09…

[轉載]基于Aaf的數據拆分

(本文適于使用Aaf框架的開發者閱讀) 1. 基本原理 在Aaf框架中&#xff0c;“對象”和“存儲”的關系映射有一個關鍵的紐帶StorageAlias&#xff0c;即“存儲別名”&#xff0c;同樣一個類型&#xff0c;在不同的存儲別名下&#xff0c;可以自由映射到任意存儲“位置”。  “位…

靠邊停車

什么是靠邊停車 靠邊停車是大路考中一個指標很明確的考核項目&#xff0c;要求學員駕駛車輛使之靠邊停下。 操作方法 1、停車前&#xff0c;要通過內、外后視鏡觀察后方和右側交通情況&#xff0c;開右轉向燈。 2、適量踩下制動踏板。 3、向右轉動方向盤(第一把輪…

RuntimeException 和 Exception 區別、異常的子父級關系

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.java 將所有的錯誤封裝為一個對象&#xff0c;其根本父類為Throwable, Throwable 有兩個子類&#xff1a;Error 和 Exception。 2.Err…

通過路口

操作方法 1、讓車減速 2、觀察路口的情況 3、通過路口 注意事項 1、不要搶黃燈 2、不要開英雄車&#xff0c;即紅燈亮起時通過路口的最后一輛車 3、控制車速&#xff0c;控制在50km/h以下 4、看到左右車都減速時&#xff0c;也馬上減速 5、要左轉…

C語言筆記(關鍵字)

gdb調試 gcc 源程序 -g&#xff1b;加gdb調試信息gdb可執行程序&#xff1b;&#xff08;gdb調試&#xff09;l&#xff08;ist&#xff09;&#xff1a;查看源碼&#xff0c;按一下從main開始10行以此往后l n&#xff1a;查看n處上下10行的源碼run&#xff1a;運行程序b&…

自定義 Git - Git 鉤子 (自動部署)

Git 鉤子 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 和其它版本控制系統一樣&#xff0c;Git 能在特定的重要動作發生時觸發自定義腳本。 有兩組這樣的鉤子&#xff1a;客戶端的和…

變更車道

操作方法 1、觀察與判斷觀察車輛后方、側方和準備變更的車道上的交通流情況&#xff1b; 2、確認安全后&#xff0c;打開轉向指示燈示意&#xff0c;并再次通過后視鏡觀察兩側道路上有無車輛超越&#xff0c;確認準備駛入的車道是否允許留有安全距離&#xff1b; 3…

C語言筆記(符號)

注釋符號 幾個似非而是的注釋問題 例子&#xff1a; (A) int / * ... * /i; (B) char * s "abcdefgh //hijklmn"; (C) //Is it a \valid comment? (D) in/ * ... * /t i; 我們知道C語言里可以有兩種注釋方式&#xff1a;“/* */” 和 “ // ”。那么上面幾條…

直線行駛

考核要求 保證跟車安全速度和安全距離&#xff0c;了解車輛行駛速度、注意觀察路面狀況&#xff0c;采取相應措施。不能有左右擺動、方向不穩的現象。 考試口訣 一.尋找中心 二.雙眼鎖定本車能通行的中心 三.心理想著走中間 四.雙眼從本車前面最突出點的.中心…

java 命令: jmap 命令使用 ( 查看內存使用、設置 )

jdk安裝后會自帶一些小工具&#xff0c;jmap命令(Java Memory Map)是其中之一。主要用于打印指定Java進程(或核心文件、遠程調試服務器)的共享對象內存映射或堆內存細節。 jmap命令可以獲得運行中的jvm的堆的快照&#xff0c;從而可以離線分析堆&#xff0c;以檢查內存泄漏&am…