РЕДАКТИРОВАТЬ: Спасибо Кенни и всем, кто ответил так же.Это действительно было DOH ... Так глупо с моей стороны не помнить об этом.
Может быть, ответ настолько прост, что ускользает от меня ... но я знаю, что кто-то здесь можетНадеюсь, это меня научит.
Итак, у меня есть довольно большой проект, в котором рассматриваются тонны очень больших JSON, объектов, массивов и т. д. И мне нужен способ динамического доступа к этим данным без предварительного знанияиз фактических названий этих.Я знаю, что someobjectname [string] работает, но мне нужно [string] [string] [string] и т. Д. И т. Д. Другими словами, все должно быть полностью динамическим.
Я знаю, я знаю, есть производительностьпроблемы с этим подходом, и я уверен, что есть лучшие методы, но я наследую эту проблему и, поверьте мне, это не вариант, чтобы изменить ее.
СЕЙЧАС, вот супер-сверх упрощенный пример, чтобы доказатьосновная проблема.Я не могу найти способ без использования eval (), который я не могу использовать, потому что данные НЕ поступают из надежных источников.
В этом примере представьте, что foo и bar (как имена объектов, так и соответствующиеЗначения опций) НЕ могут быть известны до времени выполнения.Допустим, для простоты они напечатаны с вашим любимым кодом на стороне сервера.
<script>
// Pretend these objects are inserted into
// the DOM dynamically from where ever
// so we don't know the names till runtime
var foo = {
value : "something"
}
var bar = {
value : "something else"
}
window.onload = function() {
function alertValue(option) {
// vvvv This is what I can't do
var selected_object = eval(option.getAttribute("value"));
var selected_value = selected_object.value;
alert(selected_value);
}
var option1 = document.getElementById("option1");
var option2 = document.getElementById("option2");
option1.onclick = function () {
alertValue(this);
}
option2.onclick = function () {
alertValue(this);
}
}
</script>
<html>
<select> <!-- Pretend these values are generated at runtime serverside -->
<option id="option1" value="foo">Foo's value</option>
<option id="option2" value="bar">Bar's value</option>
</select>
</html>
Любая помощь будет отличной.Я надеюсь, что это простой момент "DOH".Пожалуйста, не разбирайте этот код или метод, потому что в этом нет никакого смысла.Это не так сложно, как настоящий проект.Это просто доказательство концепции, поэтому вы понимаете проблему.