Tôi có thể thêm thuộc tính tùy chỉnh vào thẻ HTML như sau không?
<tag myAttri="myVal" />
Tôi có thể thêm thuộc tính tùy chỉnh vào thẻ HTML như sau không?
<tag myAttri="myVal" />
Câu trả lời:
Bạn có thể sửa đổi khai báo! DOCTYPE (ví dụ DTD) của mình để cho phép nó, để tài liệu [XML] vẫn còn hiệu lực:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
[
<!ATTLIST tag myAttri CDATA #IMPLIED>
]>
#IMPLIED
có nghĩa là nó là một thuộc tính tùy chọn, hoặc bạn có thể sử dụng #REQUIRED
, v.v.
Thêm thông tin trong DTD - Thuộc tính .
<meta http-equiv="content-type" content="application/xhtml+xml" />
.
data-
.
Bạn có thể thêm các thuộc tính tùy chỉnh cho các yếu tố của bạn theo ý muốn. Nhưng điều đó sẽ làm cho tài liệu của bạn không hợp lệ.
Trong HTML 5, bạn sẽ có cơ hội sử dụng các thuộc tính dữ liệu tùy chỉnh có tiền tốdata-
.
|
không được phép trong một css href
, nhưng đó là những gì cần thiết cho Google Fonts
Không, điều này sẽ phá vỡ xác nhận.
Trong HTML 5, bạn có thể / sẽ có thể thêm các thuộc tính tùy chỉnh. Một cái gì đó như thế này:
<tag data-myAttri="myVal" />
Hàm jQuery data()
cho phép bạn liên kết dữ liệu tùy ý với các phần tử DOM. Đây là một ví dụ .
Trong HTML5: yes: sử dụng thuộc tính data- .
<ul>
<li data-animal-type="bird">Owl</li>
<li data-animal-type="fish">Salmon</li>
<li data-animal-type="spider">Tarantula</li>
</ul>
Vâng, bạn có thể, bạn đã làm nó trong chính câu hỏi : <html myAttri="myVal"/>
.
var demo = document.getElementById("demo")
console.log(demo.dataset.myvar)
// or
alert(demo.dataset.myvar)
//this will show in console the value of myvar
<div id="demo" data-myvar="foo">anything</div>
Có, bạn có thể làm điều đó!
Có HTML
thẻ tiếp theo :
<tag key="value"/>
Chúng ta có thể truy cập các thuộc tính của chúng với JavaScript
:
element.getAttribute('key'); // Getter
element.setAttribute('key', 'value'); // Setter
Element.setAttribute()
đặt thuộc tính trong HTML
thẻ nếu không tồn tại. Vì vậy, bạn không cần phải khai báo nó trong HTML
mã nếu bạn định đặt nó với JavaScript
.
key
: có thể là bất kỳ tên nào bạn muốn cho thuộc tính, trong khi chưa được sử dụng cho thẻ hiện tại.
value
: nó luôn luôn là một chuỗi chứa những gì bạn cần.
Dưới đây là ví dụ:
document.getElementsByTagName("html").foo="bar"
Dưới đây là một ví dụ khác về cách đặt thuộc tính tùy chỉnh thành phần tử thẻ body:
document.getElementsByTagName('body')[0].dataset.attr1 = "foo";
document.getElementsByTagName('body')[0].dataset.attr2 = "bar";
Sau đó đọc thuộc tính bằng cách:
attr1 = document.getElementsByTagName('body')[0].dataset.attr1
attr2 = document.getElementsByTagName('body')[0].dataset.attr2
Bạn có thể kiểm tra mã trên trong Bảng điều khiển trong DevTools, ví dụ:
sử dụng dữ liệu-bất kỳ, tôi sử dụng chúng rất nhiều
<aside data-area="asidetop" data-type="responsive" class="top">
data-*
các giá trị từ JavaScript?
Một cách tiếp cận khác, sạch sẽ và sẽ giữ tài liệu hợp lệ, là nối dữ liệu bạn muốn vào một thẻ khác, ví dụ như id, sau đó sử dụng split để lấy những gì bạn muốn khi bạn muốn.
<html>
<script>
function demonstrate(){
var x = document.getElementById("example data").querySelectorAll("input");
console.log(x);
for(i=0;i<x.length;i++){
var line_to_illustrate = x[i].id + ":" + document.getElementById ( x[i].id ).value;
//concatenated values
console.log("this is all together: " + line_to_illustrate);
//split values
var split_line_to_illustrate = line_to_illustrate.split(":");
for(j=0;j<split_line_to_illustrate.length;j++){
console.log("item " + j+ " is: " + split_line_to_illustrate[j]);
}
}
}
</script>
<body>
<div id="example data">
<!-- consider the id values representing a 'from-to' relationship -->
<input id="1:2" type="number" name="quantity" min="0" max="9" value="2">
<input id="1:4" type="number" name="quantity" min="0" max="9" value="1">
<input id="3:6" type="number" name="quantity" min="0" max="9" value="5">
</div>
<input type="button" name="" id="?" value="show me" onclick="demonstrate()"/>
</body>
</html>
Bạn có thể thêm, nhưng sau đó bạn cũng phải viết một dòng mã JavaScript,
document.createElement('tag');
để đảm bảo mọi thứ rơi đúng vị trí. Ý tôi là Internet Explorer :)
<tag ...>
đây rõ ràng có nghĩa là bất kỳ thẻ HTML nào.
tốt! bạn thực sự có thể tạo ra một loạt các thuộc tính HTML tùy chỉnh bằng cách ngụy trang các thuộc tính dữ liệu theo những gì bạn thực sự muốn.
ví dụ.
[attribute='value']{
color:red;
}
<span attribute="value" >hello world</span>
Nó rõ ràng hoạt động nhưng điều đó sẽ làm mất hiệu lực tài liệu của bạn, không cần sử dụng JScript để bạn có các thuộc tính tùy chỉnh hoặc thậm chí các yếu tố trừ khi bạn phải, bạn chỉ cần xử lý các thuộc tính công thức (tùy chỉnh) mới giống như cách bạn đối xử với thuộc tính "dữ liệu"
Hãy nhớ "không hợp lệ" không có nghĩa gì cả. Tài liệu sẽ tải tốt mọi lúc. và một số trình duyệt thực sự sẽ xác nhận tài liệu của bạn chỉ bằng sự hiện diện của DOCTYPE ....., bạn thực sự biết ý tôi là gì.
Bạn có thể làm một cái gì đó như thế này để trích xuất giá trị bạn muốn từ JavaScript thay vì một thuộc tính:
<a href='#' class='click'>
<span style='display:none;'>value for JavaScript</span>some text
</a>
<input type="hidden" value="...">
. Tuy nhiên, hãy xem xét sự khác biệt giữa loại dữ liệu bạn đặt trong các thuộc tính khác nhau trái ngược với dữ liệu bạn có thể đặt trong một trường ẩn. Ẩn một <span>
(tất cả mọi thứ) trong một <a>
mục đích để duy trì một phần siêu dữ liệu không phải là một động thái tốt. Nó sẽ là đặc thù cho trang web của bạn và phụ thuộc rất nhiều vào JS (sự xuống cấp duyên dáng, con người).