[英]Is there a JavaScript alternative to greater than and less than?
我正在使用一些 CMS 系統,我必須在編輯器中粘貼 HTML 代碼(包括 CSS 和 JavaScript)。
問題是它解析輸入以驗證 html 代碼。 我有這段有問題的代碼
keys.sort(function(a,b) {
if (a.position > b.position) return 1;
if (a.position < b.position) return -1;
return 0;
});
雖然它是有效的 JS 語法,但解析器看到<
和>
並說這是 html 標簽的無效語法。
我想知道 JavaScript 是否有另一種方法來檢查大於或小於不使用那些<|>
符號。 有人知道嗎?
在這種特殊情況下,假設position
屬性是數字類型,您可以通過以下方式實現相同的排序:
keys.sort(function(a,b) {
return a.position - b.position;
});
但是,您應該真正考慮解決此處的真正問題,這可能與 CMS 或您使用它的方式有關。 例如,如果 CMS 將輸入驗證為 XHTML,您可能需要使用這個技巧: 腳本標簽中何時需要 CDATA 部分?
現在回答標題中的具體問題:
是否有大於和小於的 JavaScript 替代方案?
對於數字,您可以將 Math.min 用作>
並將 Math.max 用作<
,如下所示:
keys.sort(function(a,b) {
if (Math.min(a.position,b.position) !== b.position) return 1;
if (Math.max(a.position,b.position) !== a.position) return -1;
return 0;
});
你可以這樣做:
keys.sort(function(a,b) {
if (a.position > b.position) return 1;
if (a.position < b.position) return -1;
return 0;
});
這不會作為 JavaScript 代碼正常運行,但如果將其粘貼到 HTML 中,它將正確顯示。
剛剛做了一個時髦的 javascript hack,它將為你工作:
function isLessThan(a, b) {
return Object.is((a-b)%1, -0);
}
function isGreaterThan(a, b) {
return a !== b && Object.is((a-b)%1, 0);
}
這似乎是因為n%1
是0
或-0
具體取決於n
是大於還是等於 0,還是小於 0。
這是這樣使用的:
keys.sort(function(a,b) {
if (isGreaterThan(a.position, b.position)) return 1;
if (isLessThan(a.position, b.position)) return -1;
return 0;
});
對於您的特定用例,我建議:
keys.sort(function(a,b) { return a.position - b.position; })
信用:邁克·麥考恩
參考: 檢查 +0 與 -0
您可以用實體替換不需要的字符。
一個php示例:
$script = str_replace( "&", "&", $script );
$script = str_replace( "<", "<", $script );
$script = str_replace( ">", ">", $script );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.