2016-11-18 10 views
0

私は間違っている場所を把握できませんでした。私は非常に多くの可能性と答えを見つけましたが、カスタム属性 "attr-pid 「 javascript json jquery cantカスタム属性値を取得

<div class="prod-col et_pb_column et_pb_column_4_4" style=""> 

<div attr-pid="2" class="bbb_prov product_select et_pb_column et_pb_column_2_4 model_container"> 
<div class="icon" attr-pid="2"><img src=" " style=" max-width: 100px;"</div></div> 

<div attr-pid="4" class="bbb_prov product_select et_pb_column et_pb_column_2_4 model_container"> 
<div class="icon" attr-pid="4"><img src=" " style=" max-width: 100px;"></div></div> 

</div> 

は私が持っているこの

その倍数、にconsole.logはちょうど私を示しており、これは私がここでの唯一の1つのクラスを持っていますが、私の他のdivに取り組んでいます
aProvider = $(".bbb_prov"); 

if (me.savedJSON.providersToVisit == undefined) 
{ 
    me.savedJSON.providersToVisit = []; 
} 

for(var y = 0 ; y < aProvider.length ; y++) 
{ 
    me.savedJSON.providersToVisit.push("&bxb_provider_id="+$(aProvider[y]).attr('attr-pid')); 
} 

CEF_SaveDataJSON(me.savedJSON); 

console.log(JSON.stringify(me.savedJSON, null, 2)); 

"providersToVisit": [] 
+0

'aProvider'はjqueryコレクションです。配列の表記法を使ってアクセスできるかどうかはわかりません。 – bassxzero

+0

@Santi、jQueryオブジェクトで '[]'アクセサーを使うと、そのオブジェクトは基底オブジェクトになります。そのため、このインスタンスでは実際のDOM要素になります。代わりにjQueryラップされた要素をその位置に取得するために[[.eq(y) '](http://api.jquery.com/eq/)を使うこともできますし、[' .each() ']( http://api.jquery.com/each/)を使用してコレクションをループします。 –

+0

はい、あなたは正しいパトリックです、私はただ私のコメントを編集しました。私は疑惑を調査するためにJSFiddleに行って、同じことを見つけました!ありがとう。 – Santi

答えて

0

提供されるコードが動作する(このバイオリンを参照してください。https://jsfiddle.net/ta3sgh8e/

HTML

<div class="prod-col et_pb_column et_pb_column_4_4" style=""> 
<div attr-pid="2" class="bbb_prov product_select et_pb_column et_pb_column_2_4 model_container"> 
<div class="icon" attr-pid="2"><img src=" " style=" max-width: 100px;"></div></div> 
<div attr-pid="4" class="bbb_prov product_select et_pb_column et_pb_column_2_4 model_container"> 
<div class="icon" attr-pid="4"><img src=" " style=" max-width: 100px;"></div></div> 
</div> 

JS

function CEF_SaveDataJSON(data){ 
    //What happens in this function? 
    //data.providersToVisit = []; 
} 
me = {savedJSON:{}}; 
aProvider = $(".bbb_prov"); 
if (me.savedJSON.providersToVisit == undefined) 
{ 
    me.savedJSON.providersToVisit = []; 
} 
for(var y = 0 ; y < aProvider.length ; y++) 
{ 
    me.savedJSON.providersToVisit.push("&bxb_provider_id="+$(aProvider[y]).attr('attr-pid')); 
} 
CEF_SaveDataJSON(me.savedJSON); 
console.log(JSON.stringify(me.savedJSON, null, 2)); 

私の疑惑は、あなたがあなたの例から除外してきた私たちが見ることができない、他のペテンがない限りデータは、前にあなたのコンソールログにCEF_SaveDataJSON関数内で変更されていることです。

0

フィドルhttp://jsbin.com/kutudogopo/edit?html,js,console

これを試してください。とにかくそれらをループしているだけなので、JQueryの.eachメソッドを使ってループすることができます。

HTML:

<div class="prod-col et_pb_column et_pb_column_4_4" style=""> 

<div attr-pid="2" class="bbb_prov product_select et_pb_column et_pb_column_2_4 model_container"> 
<div class="icon" attr-pid="2"><img src=" " style=" max-width: 100px;"</div></div> 

<div attr-pid="4" class="bbb_prov product_select et_pb_column et_pb_column_2_4 model_container"> 
<div class="icon" attr-pid="4"><img src=" " style=" max-width: 100px;"></div></div> 

はJQuery:

var aProvider = $(".bbb_prov"); 
console.log(aProvider.length); 

$.each(aProvider, function(){ 
    var $this = $(this); 
    console.log($this.attr('attr-pid')); 

}); 
0

はい、それはそのまま動作するので、間違いを見つけて、コード全体を投稿していないと悪いと感じました。だから私は "if url ==="を削除しました。

this.onPageLoad = function() 
{ 
    var url = window.location.href; 
    var aModels; 
    var aProvider; 

    //iphone 
    if (url == "http://blablabla.com/apple/?menuf_id=1") //This is were i screwed up and had to remove it. 
    { 
     aModels = $(".bbb_prov"); 


     if (me.savedJSON.modelsToVisit == undefined) { 
      me.savedJSON.modelsToVisit = []; 
     } 

     if (me.savedJSON.phoneModel == undefined) { 
      me.savedJSON.phoneModel = []; 
     } 

     for(var i = 0 ; i < aModels.length ; i++) 
     { 
      me.savedJSON.modelsToVisit.push("http://blablabla.com/apple/?menuf_id=1&bxb_model_id="+$(aModels[i]).attr('attr-mid')); 
     } 

     for(var x = 0 ; x < aModels.length ; x++) 
     { 
      me.savedJSON.phoneModel.push($(aModels[x]).text()); 
     } 

     CEF_SaveDataJSON(me.savedJSON); 


     me.blablabla_GotoNextModel(); 

     aProvider = $(".bbb_prov"); 

     if (me.savedJSON.providersToVisit == undefined) { 
      me.savedJSON.providersToVisit = []; 
     } 


     for(var y = 0 ; y < aProvider.length ; y++) 
     { 
      me.savedJSON.providersToVisit.push("&bxb_provider_id="+$(aProvider[y]).attr('attr-pid')); 
     } 

     CEF_SaveDataJSON(me.savedJSON); 

     console.log(JSON.stringify(me.savedJSON, null, 3)); 
    } 

} 
関連する問題