Это действительно намерение иметь несколько форм?Нет никаких причин, почему бы и нет, но вы можете выполнить то, что вам нужно, вообще говоря, с помощью одной формы.
Используя nodelist
, вы можете выполнять итерацию и назначать прослушиватели событий отдельно для HTML - встроенные обработчики событий в настоящее время считаются старой школой.В этом примере обработчик событий назначается каждой кнопке и просто предупреждает числовое значение, назначенное кнопке (как в вашем примере), а также значение и тип текстового поля, чтобы показать, как вы можете получить к нему доступ при необходимости.
Быстрая демонстрация
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>JS Func</title>
<style>
fieldset{border:none;margin:1rem auto}
</style>
</head>
<body>
<form>
<?php
for( $i=1; $i<5; $i++ ) {
$rand = rand(1,99);
?>
<fieldset>
<?php echo $i; ?>
<input type='text' name='txt[]' value='<?php echo $i * $rand; ?>' />
<input type='button' value='<?php echo $i; ?>' />
</fieldset>
<?php
}
?>
</form>
<script>
Array.prototype.slice.call( document.querySelectorAll( 'form > fieldset > input[type="button"]' ) ).forEach( function( bttn ){
bttn.addEventListener('click', function(event){
alert( this.value +' '+this.previousElementSibling.value + ' ' +this.previousElementSibling.tagName )
}, false );
})
</script>
</body>
</html>