c = a + b
на самом деле {} + \[\]
{} + []
{} здесь не анализируется как объект, но вместо этого как пустой блок (§12.1, по крайней мере, до тех пор, пока вы не заставляете этот оператор быть выражением, но об этом позже). Возвращаемое значение пустых блоков пустое, поэтому результат этого оператора такой же, как + []. Унарный оператор + (§11.4.6) возвращает ToNumber (ToPrimitive (operand)). Как мы уже знаем, ToPrimitive ([]) является пустой строкой, и согласно §9.3.1, ToNumber ("") равен 0.
blockquote>a - строка, которая является стороной
{}
, а b (string[]
) -[]
. Когда вы суммируете строковый объект с массивом строк, javascript неявно преобразует массив строк в объединенную строку (что является ожидаемым поведением), поэтому здесь нет ничего противозаконного для javascript.
Список выбора имеет как значение, которое отображается пользователю, так и значение, которое передается обратно на сервер в форме сообщения. Таким образом, вы можете использовать какой-то разделитель в опубликованном значении, чтобы получить оба значения, отправленные обратно, а затем проанализировать их в этой точке:
<select id="myselectlist" >
<option value="foo|bar">foo</option>
<option value="foo2|bar2">foo2</option>
</select>
Но еще лучше было бы передать обратно значение идентификатора, которое затем можно было бы использовать, чтобы узнать, какой элемент был выбран из базы данных, а также использовать его для поиска второго связанного элемента:
<select id="myselectlist" >
<option value="123">foo</option>
<option value="124">foo2</option>
</select>
Ваша база данных может выглядеть так:
ID DisplayValue OtherData
123 foo bar
124 foo2 bar2
Если необходимо использовать скрытое поле для каждого опции выпадающего выбора, можно установить то значение в собственном атрибуте в теге, вместо того, чтобы установить его в скрытое поле.
<option value="foo" fooData="foo|bar">foo</option>
<option value="foo2" fooData="foo2|bar2">foo2</option>
Существует форма ввода type = 'hidden'
, которую вы можете обновить с помощью события onchange
в раскрывающемся списке выбора, после чего она будет опубликована с формой. Я подозреваю, что вы захотите создать массив возможных значений для скрытого ввода в том же порядке, что и их эквиваленты в раскрывающемся списке выбора, а затем получить доступ к значению в массиве по индексу, используя свойство selectedIndex
для элемент выбора.