2016-06-15 54 views
1

我有一個功能,即創建元素,並根據參數重點對象並不需要 -

function createInfo(x , obj , text){ 
    var element = document.createElement(x); 
    if(obj){ 
     var obj_child = Object.keys(obj); 
     for(var i = 0; i < obj_child.length; i++){ 
      element.setAttribute(obj_child[i], obj[obj_child[i]]); 
     } 
    } 
    if(text) 
     element.innerHTML = text; 
    return element; 
} 

它工作正常,但問題是,當我通過「數據屬性」爲參數設置屬性, 如

var div =createInfo("div",{class:"left_info",data-index:index},null) 

它拋出

意外標記 -

爲什麼沒有在密鑰的名稱中使用-?它出什麼問題了?

回答

3

data-index看起來像「data減去index」JavaScript解析器,並沒有意義。如果你想使用它作爲一個屬性名稱,把它放在引號,這是你如何告訴JavaScript的,它只是一個屬性名稱:

var div =createInfo("div",{class:"left_info","data-index":index},null) 
// ------------------------------------------^----------^ 

一些舊的瀏覽器可能需要你把引號class爲好,原因完全不同:class是一個關鍵字。 (但是,現代的有細帶引號它不是,JavaScript標準是在2009年更新的理解,它不是一個關鍵字那裏。)

var div =createInfo("div",{"class":"left_info","data-index":index},null) 
1

嘗試定義這樣的對象:

var div =createInfo("div",{"class":"left_info","data-index":index},null)