gary,
I like your name BTW.
All your options are good for you. I do have a preference for snoopy's usage of the value field rather than more attributes. The reason for this is that you might send this form to a server and this would mean that the values inside the value attribute will also be on the server. Very useful. MrGreed's method is great. I love adding attributes myself but only use it when I know it is information useful on the client side only. His idea can be used in many other problems similar to this one so do keep it in a folder inside your mind.
Extending on snoopy's method I'd like to bring to your attention the String.split() and Array.join() methods. They allow you to create an array from a string using a delimiter and do the reverse, a delimited string from an array. Here is an example :
var elementValue = "value1|value2|etc";
var arrayValues = elementValue.split('|');
for(var ii = 0; ii < arrayValues.length; ii++)
{
alert("element at index " + ii + " is " + arrayValues[ii])
}
// note you can also join elements of an array to make it a string delimited by a character
arrayValues[3] = "this one was added at the last minute"
var elementValue = arrayValues.join('|');
alert("the value string now contains : " + elementValue);
I hope this helps. Gary
Haran