var select = document.getElementById("selectSubject");
var opt = 'youreemailvalue';
var el = document.createElement("option");
el.textContent = opt;
el.value = opt;
select.appendChild(el);
function SetSelectedValue() {
var e = document.getElementById("selectSubject");
var selected_value = e.options[e.selectedIndex].value;
document.getElementById('uploadFile').value = selected_value;
alert('value set to uploadfile')
}
Следующий код работает для меня
var e = document.getElementById("selectSubject");
var selected_value= e.options[e.selectedIndex].value;
selected_value get значение, которое выбирает пользователь
Рабочий пример Jsfiddle Здесь https://jsfiddle.net/0yfdc51g/
Переместитесь для повышения интеллектуальных указателей.
Тем временем можно хотеть извлечь работу auto_ptr реализация от старого / другой STL, таким образом, у Вас есть рабочий код.
Я полагаю, что auto_ptr семантика существенно повреждается - она сохраняет ввод, но интерфейс на самом деле не более прост: все еще необходимо отследить, какой экземпляр является текущим владельцем, и удостоверьтесь листы владельца в последний раз.
уникальные-ptr "меры", что, заставляя выпуск не только бросить владение, но также и установку в NULL RHS. Это - самая близкая замена для auto-ptr, но с его другой семантикой это не общедоступная замена.
Существует вводная статья для повышения интеллектуальных указателей, гм, меня.
Используйте unique_ptr. Я думаю, что они были представлены, чтобы быть лучшим auto_ptr.
На самом деле я ведусь полагать, что auto_ptr может быть удержан от использования в пользу него:
Почему делают Вы думаете станд.:: auto_ptr <> повреждается.
Я имел бы, хотя это что-то настолько плохо, как об этом сообщат стандартам comitte!
Сделайте Вы подразумеваете, что Вы должны:
std::auto_ptr<T> x(new T); // Use the explicit constructor.
Повышение использования:: shared_ptr/boost:: scoped_ptr. Это будет предпочтительный интеллектуальный указатель в предстоящих стандартах C++ (уже находится в TR1).
Править: Найдите связанное обсуждение здесь: Идиоматическое использование станд.:: auto_ptr или только используют shared_ptr?
Насколько я помню, не так ли:
auto_ptr<T> x = auto_ptr<T>(new T()); ??
Не ответ, но для общего интереса всех, для кого эти ошибки актуальны. Есть еще одна связанная ошибка с auto_ptr
VC8, которая связана с неявным повышением качества. Это, вероятно, самое зло из всех, потому что другие ошибки просто позволяют без сбоев компилировать код, который в противном случае является незаконным в соответствии со стандартом, но, по крайней мере, совместимый код работает нормально. Из-за этой ошибки код, который действительно соответствует требованиям, не работает должным образом.
Проблема заключается в следующем. Стандарт определяет конструкторы auto_ptr
и операторы преобразования таким образом, что они поддерживают неявное преобразование с повышением частоты auto_ptr
, как и обычные указатели. Однако, Реализация этого VC8 выполняет reinterpret_cast
, а не static_cast
. Естественно, это не только UB буквой стандарта, но и разрыв с несколькими базовыми классами и / или виртуальным наследованием. Вот пример нарушенного этим юридического кода:
struct Base1 { int x; };
struct Base2 { int y; };
struct Derived : Base1, Base2 {};
std::auto_ptr<Derived> createDerived()
{
return std::auto_ptr<Derived>(new Derived);
}
std::auto_ptr<Base2> base2(createDerived());
На одной из моих прошлых работ, когда мы столкнулись с этой проблемой в производстве, мы просто сами исправили заголовки (это тривиальное исправление из двух строк).