I want to get the product id on selecting the text-swatch option. for that, I have used the code given below. I am getting the error of "Cannot read properties of undefined (reading 'options')".
Path of Phtml File:- /app/code/Vendor/Module/view/frontend/templates/product/view/type/custom.phtml
<script type="text/javascript">
requirejs(['jquery','underscore'], function(jQuery,_){
jQuery(window).on('load',function(){
jQuery( ".product-options-wrapper div" ).click(function() {
selpro();
});
});
function selpro () {
var selected_options = {};
jQuery('div.swatch-attribute').each(function(k,v){
var attribute_id = jQuery(v).attr('data-attribute-id');
var option_selected = jQuery(v).attr('data-option-selected');
if(!attribute_id || !option_selected){ return;}
selected_options[attribute_id] = option_selected;
});
var product_id_index = jQuery('[data-role=swatch-options]').data('mageSwatchRenderer').options.jsonConfig.index;
var found_ids = [];
jQuery.each(product_id_index, function(product_id,attributes){
var productIsSelected = function(attributes, selected_options){
return _.isEqual(attributes, selected_options);
}
if(productIsSelected(attributes, selected_options)){
found_ids.push(product_id);
}
});
// console.log(found_ids);
if (found_ids.length) {
var selected_product_id = found_ids[0];
jQuery('.myli').css('display','none');
jQuery('#div'+selected_product_id).toggle();
}
}
});
</script>