2016-06-15 1 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は、JavaScriptパーサーには「dataマイナスindex」のように見えますが、そこには意味がありません。あなたは、プロパティ名として使用引用符でそれを置く、あなたはそれだけで、プロパティ名だと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) 
関連する問題