हाय दोस्तों मैं 2 सरणियों के माध्यम से लूप करने की कोशिश कर रहा हूं, एक सरणी बटन आईडी को संभालती है, दूसरा पाठ को संभालती है। हालांकि यह पाठ सरणी के माध्यम से पुनरावृति करने में सक्षम प्रतीत नहीं होता है। जब मैं विंडो की कोशिश करता हूं। मान को अलर्ट करता हूं, तो यह अपरिभाषित होता है।

var buttonIdArray = ['#one', '#two']
var textArray = ['this is button one', 'this is button two']

function buttonDetails() {
  for (var i = 0; i < buttonIdArray.length; i++) {
    $(buttonIdArray[i]).click(function() {
      window.alert(textArray[i])
    })
  }
}
<button id ='one'>one</button>
<button id ='two'>two</button>
0
James 2 अप्रैल 2018, 22:36

2 जवाब

सबसे बढ़िया उत्तर

.click() संदर्भ में भिन्न scope के कारण आपको अपना टेक्स्ट textArray से पहले प्राप्त करना होगा, जैसे:

var buttonIdArray = ['#one', '#two']
var textArray = ['this is button one', 'this is button two']

function buttonDetails() {
  for (var i = 0; i < buttonIdArray.length; i++) {
    const text = textArray[i]
    $(buttonIdArray[i]).click(function() {
      window.alert(text)
    })
  }
}

buttonDetails()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id='one'>one</button>
<button id='two'>two</button>
2
Thomas Brd 2 अप्रैल 2018, 19:49

आप jQuery के index() का उपयोग कर सकते हैं। (नीचे की तरह)

var buttonIdArray = ['#one','#two'];
var textArray=['this is button one','this is button two'];

for (var i =0; i<buttonIdArray.length;i++)
{
  $(buttonIdArray[i]).click(function(){
    console.log(textArray[$(this).index()-1]);
  });
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id ='one'>1</button>
<button id ='two'>2</button>
0
yajiv 2 अप्रैल 2018, 19:44