.html() .text() .val() 的差別與前端html編解碼
一、.val()
Get:
.val()
Set:
.val( Value value )
.val( Function function )
1、val()通常被用於input、select、textarea。
2、通常回傳該元素的內文,如以select元素為例,
可複選的話則回傳為一內文陣列。
程式範例:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>val demo</title> <style> p { color: red; margin: 4px; } b { color: blue; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p></p> <select id="single"> <option>Single</option> <option>Single2</option> </select> <select id="multiple" multiple="multiple"> <option selected="selected">Multiple</option> <option>Multiple2</option> <option selected="selected">Multiple3</option> </select> <script> function displayVals() { var singleValues = $("#single").val(); var multipleValues = $("#multiple").val() || []; $("p").html("<b>Single:</b> " + singleValues + " <b>Multiple:</b> " + multipleValues.join(", ")); } $("select").change(displayVals); displayVals(); </script> </body> </html>
3、val(value)可用來設定值,但只限於input、select、textarea元素
程式範例:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>val demo</title> <style> body { color: blue; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <select id="single"> <option>Single</option> <option>Single2</option> </select> <select id="multiple" multiple="multiple"> <option selected="selected">Multiple</option> <option>Multiple2</option> <option selected="selected">Multiple3</option> </select> <br> <input type="checkbox" name="checkboxname" value="check1"> check1 <input type="checkbox" name="checkboxname" value="check2"> check2 <input type="radio" name="r" value="radio1"> radio1 <input type="radio" name="r" value="radio2"> radio2 <script> $("#single").val("Single2"); $("#multiple").val(["Multiple2", "Multiple3"]); $("input").val(["check1", "check2", "radio1"]); </script> </body> </html>
4、.val()與取屬性值value結果一樣
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <script src="https://code.jquery.com/jquery-3.1.0.js"></script> </head> <body> <input type="text" id="txtCreate" name="txtCreate" value="bbb"> <p id="val">val</p> <p id="value">value</p> <script> $("input").keyup(function myfunction() { $("#val").text($("input").val()); $("#value").text($("input")[0].value); }); </script> </body> </html>
唯需注意使用value屬性時需先看一下selector型態,再取值
二、.text()
Get:
.text()
Set:
.text( Text text )
.text( Function function )
1、其操作方式與val()相異,不能操作於input、select、textarea
2、通常回傳該元素的內文。
3、使用text()前須先指定從何開始組起。
4、使用text()之後他會把該元素裡的文字通通都轉成不帶格式的純文字(拿掉html),
不管裡面包著多少層元素都會被組合成一字串,
該字串的每一層組合會插入一個空白作分隔,同層不插入空白。
範例程式:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>text demo</title> <style> p { color: blue; margin: 8px; } b { color: red; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <div class="demo-container"> <div class="demo-box">Demonstration Box</div> <ul> <li>list item 1</li> <li>list <strong>item</strong> 2</li> </ul> </div> <p></p> <script> var str = $("div:first").text(); $("p:last").html(str); </script> </body> </html>
5、另外text()也可以用來設定文字
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>text demo</title> <style> p { color: blue; margin: 8px; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p>Test Paragraph.</p> <script> $("p").text("<b>Some</b> new text."); </script> </body> </html>
此程式為在p tag裡面放入「<b>Some</b> new text.」文字
三、.html()
取得或設定一元素的html原始碼。
Get:
.html()
Set:
.html( HtmlString htmlString )
.html( Function function )
可以把字串標記轉成html呈現(解碼)
例:$("p").html("<b>Single:</b>");
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>text demo</title> <style> p { color: blue; margin: 8px; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p>Test Paragraph.</p> <script> $("p").html("<b>Some</b> new text."); </script> </body> </html>
html解碼在實際應用上常常會用到下面方法
var decoded = $("<div/>").html(encodedStr).text();
當使用html()解碼後,再使用text()回傳字串給decoded
也可以把html轉成純tag字串(編碼)
例:$(this).html();
當把html轉成純tag字串時還算直覺,
但再一次把純tag字串做轉換時則會將那些HTML Entities編碼成Entity Name。
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>text demo</title> <style> p { color: blue; margin: 8px; } </style> <script src="https://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <p><b>Test Paragraph.</b></p> <p id="output"></p> <p id="output2"></p> <script> var a = $("p").html(); $("#output").text(a); var b = $("#output").html(); $("#output2").text(b); </script> </body> </html>
參考資料: