This test checks that an attribute is not removed when set to the initial value of an <input> tag using setAttribute(). If the test passes, you will see a list of PASS lines below, followed by TEST COMPLETE. See Bugzilla Bug 4059 Some values used with setAttribute() cause the attribute to be removed (null strings vs. empty strings).

PASS elem.value is ''

Before calling setAttribute("startval", elem.value):

PASS elem.getAttribute('startval') is ''

After calling setAttribute("startval", elem.value):

PASS elem.getAttribute('startval') is ''

Before calling setAttribute("style", elem.value):

PASS elem.getAttribute('style') is ''

After calling setAttribute("style", elem.value):

PASS elem.getAttribute('style') is ''

PASS successfullyParsed is true

TEST COMPLETE

