else if (buttonState == LOW);
By putting a semi-colon after the if statement here you have created an empty if clause (ie, no action), so nothing happens.
Just as a tip - you don't have to test with an if in the else part of the statement - else is already everything else so if it not == HIGH everything else (in this case == LOW) will flow into the else without the special test.
And here is also an alternative for your code:
boolean change = false;
while (change == false)
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)
change = (buttonState == HIGH);