2015-12-07 59 views
1

有沒有辦法通過屬性傳遞數組或對象?像:通過屬性傳遞屬性/對象。 Javascript

<div id="myelem" myattr="{ title: 'hello', author: 'mike'}, { title: 'world', author: 'hellen'}, {...}"/> 

我只是嘗試這樣使用JavaScript,但正在返回第一個對象,我想有這樣的事情:

for(let i=0; i<this.myattr.length; i++){ 
    console.log(this.myattr.title); 
} 

任何想法? Thankyou

回答

1

您必須*使用JSON.parse(),您的字符串必須採用有效的JSON格式。

var element = document.getElementById('myelem') 
 
var attributeContent = element.getAttribute('data-myattr') 
 
var object = JSON.parse(attributeContent)
<div id="myelem" data-myattr='[{ "title": "hello", "author": "mike" }, { "title": "world", "author": "hellen" }]' />

*你也可以做var object = eval(attributeContent),而不需要一個JSON字符串的。但是,看看「Why is using the JavaScript eval function a bad idea?


最後,我想建議使用<script>標籤,而不是一個屬性通過您通過JavaScript的HTML對象碼:

<script> 
    var myStuff = [{ title: 'hello', author: 'mike' }, { title: 'world', author: 'hellen' }, {}]; 
</script> 

你然後將能夠訪問myStuff在你的JavaScript碼

0

從這個

<div id="myelem" myattr="[{ title: 'hello', author: 'mike'}, { title: 'world', author: 'hellen'}, {...}]"/> 

獲取的屬性值

1的Javascript

var attr = document.getElementById('myelem').getAttribute('myattr') 

2. JQuery的

var attr = $('.myelem').attr('myelem') 

字符串JSON

var obj = JSON.parse(attr) 
0

當你標記你的問題聚合物 - 這適用於聚合物元素:

<polymer-element object-attribute='{"alt":"json", "q":"chrome"}'> 

來源:https://elements.polymer-project.org/elements/iron-ajax

嘗試了一個自定義元素,它的工作以及 - 遺憾的是它不工作默認的html元素(例如申報單)。所以也許爲此定義一個自定義元素可能是您的一個解決方案。否則使用上面的答案;)