2016-09-05 16 views
0

この質問は、私が先に質問したGiving an element multiple names/id's質問の続きです.2番目の回答は、要素に複数の属性を与えるより良い方法は何かを示しています。htmlデータセットIDを使用した未定義の変数

しかし、私の仕事にこの方法を適用した後。私のjavascript変数は未定義です。

私のhtml:

<a data-toggle="modal" data-id="prodModal" data-presId="<?php echo $selectPresForJs->valueof('pres_id'); ?>" data-prodId="<?php echo $prod->prod_id; ?>" data-target="#prodModal" class="image_modal" > 
        <img class="image-modal" style="width: 192px; height:192px;" src="<?php echo $prod->prod_icon; ?>"> 
        <span ><h2 style='color:#2468A6'><b><?php echo $prod->prod_name ?></b></h2></span> 
       </a> 

$(document).ready(function(){ 



$('#prodModal').click(function() { 


     var ajaxprodId = $('#prodModal').data('prodId'); 
     var ajaxpresId = $('#prodModal').data('presId'); 
       /*Console Prints the variables as undefined*/ 
      console.log(ajaxprodId); 
      console.log(ajaxpresId); 

     $.ajax({ 

     url: "path/to/file/Presentation.php", 
     type: "POST", 
     data: {prodId : ajaxprodId,presId:ajaxpresId} 


     ,success: function(data){ 
     console.log("Success was achieved"); 
     document.getElementById("modal_content").innerHTML = "Works"; 
     }, 
     error: function(data){ 
      console.error("The action was unsuccessfull"); 
      alert(data); 

     } 


    }); 
}); 


}); 

1.がどのように修正したい友達のjavascript /変数ajaxprodIdajaxpresIdが未定義されないように私のコードを変更しますか?モーダルは、開いて閉じてから再度開いた後、現在位置が唯一の作品として正しい場所は次のようになり

2.は、AjaxはinnerHTMLプロパティを置き換える必要があります。

+2

を持つ任意の要素が存在しないので、あなたの要素はIDを持っていないので、予想通り、 '$(「#prodModalは」)'、何も返しませんしたがって、 '$( '#prodModal')データ( 'prodId')'は定義されていません。 – adeneo

+0

^^ + 'data- *'名前付けがオフで、大文字は許可されていません。https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/data-* – Teemu

答えて

0

セレクタ$('#prodModal')を使用する場合、idprodModalに設定されたDOM要素を参照しています。そのidはあなたのdata-idと同じではありません。

あなたが$('#prodModal')を使用しているときに、あなたは何を取得そのid

+0

多く。しかし、その代わりに何がありますか?同じ方法で 'data-id'をどのように参照できますか? –

+0

'$( '[data-id =" prodModal "]')'を実行すると、HTMLを変更してdata-idではなくIDを使用する方が簡単です。 – adeneo

+0

うん、@adeneoは、HTML上に 'id'を設定するという簡単な方法を示唆しています。 'data-id =" prodModal "を' id = "prodModal"に変更すると完了です –