2012-07-02 46 views
49

Tôi đang sử dụng The DynaTree (https://code.google.com/p/dynatree) nhưng tôi đang gặp một số sự cố và hy vọng ai đó có thể giúp ..Đặt thuộc tính dữ liệu bằng cách sử dụng JavaScript

Tôi đang hiển thị cây trên trang như dưới đây:

<div id="tree"> 
     <ul> 
      <li class="folder">Outputs 
       <ul> 
        <li id="item1" data="icon: 'base.gif', url: 'page1.htm', target: 'AccessPage'">Item 1 Title 
        <li id="item2" data="icon: 'base.gif', url: 'page2.htm', target: 'AccessPage'">Item 2 Title 
        <li id="item3" data="icon: 'base.gif', url: 'page3.htm', target: 'AccessPage'">Item 3 Title 
        <li id="item4" data="icon: 'base.gif', url: 'page4.htm', target: 'AccessPage'">Item 4 Title 
       </ul> 
     </ul> 
    </div> 

Tuy nhiên tôi đang cố gắng để thay đổi biểu tượng trên một item không có vấn đề nếu nó được chọn hay không chỉ sử dụng Javascript.

biểu tượng mới Tôi muốn sử dụng được base2.gif

Tôi đã thử bằng cách sử dụng sau đây nhưng nó dường như không làm việc:

document.getElementById('item1').data = "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'"; 

ai biết những gì tôi có thể làm sai?

+2

từ khóa 'dữ liệu' là một tiền tố. Bạn nên sử dụng 'data-you-attribute-name' – MilkyWayJoe

+4

@Aaron Bạn nên chọn câu trả lời hay nhất. – 0x499602D2

Trả lời

115

Sử dụng setAttribute phương pháp:

document.getElementById('item1').setAttribute('data', "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output: '1'"); 

Nhưng bạn thực sự cần phải sử dụng dữ liệu theo sau với một dấu gạch ngang và với tài sản của mình, như:

<li ... data-icon="base.gif" ...> 

Và để làm điều đó trong JS sử dụng dataset thuộc tính:

document.getElementById('item1').dataset.icon = "base.gif"; 
+8

Thuộc tính tập dữ liệu có thể hữu ích nếu chỉ các trình duyệt tuân thủ HTML5 mới được xem xét, nhưng đó là danh sách ngắn và cần hỗ trợ rộng hơn cho web chung. Tôi muốn sử dụng * setAttribute * ngay bây giờ. – RobG

+0

vẫn không thể làm cho nó hoạt động bằng cách sử dụng document.getElementById ('item1'). SetAttribute ('data', "icon: 'base2.gif', url: 'output.htm', target: 'AccessPage', output : '1' "); – Aaron

+0

Chính xác bạn đang làm gì trong mã của mình khiến bạn nhận ra nó không hoạt động? – 0x499602D2

29

Vui lòng sử dụng tập dữ liệu

var article = document.querySelector('#electriccars'), 
    data = article.dataset; 

// data.columns -> "3" 
// data.indexnumber -> "12314" 
// data.parent -> "cars" 

như vậy trong trường hợp của bạn để thiết lập dữ liệu:

getElementById('item1').dataset.icon = "base2.gif"; 
+1

Ngoài ra (khi cần thiết), sử dụng camelCase để đề cập đến tên hyphenated (chuỗi có dấu ngoặc vuông không thành công). – jtheletter

+2

https://jsperf.com/html5-dataset-vs-native-setattribute Phương pháp được đề xuất này chậm hơn rất nhiều – lxm7

Các vấn đề liên quan