After a lot of hair tearing out this is what i've come up with. It works, but i actually don't know why it works. the momentary button is pushed and the led blinks even if the button is released. just for learning purposes can anyone explain why this is working?

const int buttonPin1 = (A3);
const int ledPin1 = (13);
const int buttonPin2 = (A2);
const int ledPin2 = (12);
const int buttonPin3 = (A1);
const int ledPin3 = (11);
const int buttonPin4 = (A0);
const int ledPin4 = (10);
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin2, INPUT);
pinMode(ledPin3, OUTPUT);
pinMode(buttonPin3, INPUT);
pinMode(ledPin4, OUTPUT);
pinMode(buttonPin4, INPUT);
}
void loop(){
buttonState1 = digitalRead(buttonPin1);
if (buttonState1 == HIGH) {
digitalWrite(ledPin1, HIGH);
delay (100);
digitalWrite(ledPin1, LOW);
delay (100);
digitalWrite(ledPin1, HIGH);
delay (100);
digitalWrite(ledPin1, LOW);
delay (100);
digitalWrite(ledPin1, HIGH);
delay (100);
digitalWrite(ledPin1, LOW);
delay(100);
digitalWrite(ledPin1, HIGH);
delay (100);
digitalWrite(ledPin1, LOW);
delay(100);
digitalWrite(ledPin1, HIGH);
delay (100);
digitalWrite(ledPin1, LOW);
delay(100);
}
else {
digitalWrite(ledPin1, LOW);
buttonState2 = digitalRead(buttonPin2);
if (buttonState2 == HIGH) {
digitalWrite(ledPin2, HIGH);
delay (100);
digitalWrite(ledPin2, LOW);
delay (100);
digitalWrite(ledPin2, HIGH);
delay (100);
digitalWrite(ledPin2, LOW);
delay (100);
digitalWrite(ledPin2, HIGH);
delay (100);
digitalWrite(ledPin2, LOW);
delay(100);
digitalWrite(ledPin2, HIGH);
delay (100);
digitalWrite(ledPin2, LOW);
delay(100);
digitalWrite(ledPin2, HIGH);
delay (100);
digitalWrite(ledPin2, LOW);
delay(100);
}
else {
digitalWrite(ledPin2, LOW);
buttonState3 = digitalRead(buttonPin3);
if (buttonState3 == HIGH) {
digitalWrite(ledPin3, HIGH);
delay (100);
digitalWrite(ledPin3, LOW);
delay (100);
digitalWrite(ledPin3, HIGH);
delay (100);
digitalWrite(ledPin3, LOW);
delay (100);
digitalWrite(ledPin3, HIGH);
delay (100);
digitalWrite(ledPin3, LOW);
delay(100);
digitalWrite(ledPin3, HIGH);
delay (100);
digitalWrite(ledPin3, LOW);
delay(100);
digitalWrite(ledPin3, HIGH);
delay (100);
digitalWrite(ledPin3, LOW);
delay(100);
}
else {
digitalWrite(ledPin3, LOW);
buttonState4 = digitalRead(buttonPin4);
if (buttonState4 == HIGH) {
digitalWrite(ledPin4, HIGH);
delay (100);
digitalWrite(ledPin4, LOW);
delay (100);
digitalWrite(ledPin4, HIGH);
delay (100);
digitalWrite(ledPin4, LOW);
delay (100);
digitalWrite(ledPin4, HIGH);
delay (100);
digitalWrite(ledPin4, LOW);
delay(100);
digitalWrite(ledPin4, HIGH);
delay (100);
digitalWrite(ledPin4, LOW);
delay(100);
digitalWrite(ledPin4, HIGH);
delay (100);
digitalWrite(ledPin4, LOW);
delay(100);
}
else {
digitalWrite(ledPin4, LOW);
}
}
}
}
}