а если точнее, то при смене input.value - атрибут в html коде не поменяется, и если брать его значение( c помощью . getAttribute) то естественно там подтянется значение с хтмл документа(с верстки). Поэтому стоит выбрать что-то одно (либо инпут.велью, либо аттрибут). Если брать значение с getAttribute, то стоит и задавать значение с setAttribute