Используйте переменные, чтобы решить, какой объект в массиве получает атрибут? - PullRequest
0 голосов
/ 12 мая 2010

У меня есть веб-приложение с двумя текстовыми областями. Когда одна текстовая область получает событие mousedown, устанавливается переменная "side", либо "left", либо "right". Когда пользователь выбирает некоторый текст в текстовой области, создаются три строки. Один для текста перед началом выделения, самого выделения и текста после выделения до конца. Функция настроена так, чтобы возвращать это так:

return { head: head_text, tail: tail_text, sel: sel_text, side: text_side }

Теперь я создал массив и хочу, чтобы он отображался таким образом, чтобы мы получили text.left ({"head": "four score", "selection": "and seven", "tail" ":" лет назад. "}) Я предполагаю, что сделал бы это text.side = getSelection(), но как мне заставить его оценивать переменную" side "вместо того, чтобы думать об этом как об объекте внутри" text "?

EDIT: Хорошо, просто чтобы уточнить, я могу быть совершенно не прав в своих идеях о том, как это работает, но здесь все идет. Я хочу сделать так, чтобы функция могла смотреть на «текст», видеть внутри текста два объекта, «левый» и «правый», а затем оценивать голову, сел и хвост каждого объекта. Мне было бы легче использовать два объекта?

Ответы [ 2 ]

0 голосов
/ 12 мая 2010

Правильно ли я предполагаю, что вы хотите массив, содержащий values полей head, selection и tail? Что вы можете сделать, используя

var myObject = ....// the method with the return statement from your question
var myArray = [myObject.head, myObject.selection, myObject.tail];

Теперь, если вам снова нужна полная строка, вы можете использовать

var myText = myArray.join("");
0 голосов
/ 12 мая 2010

Я не совсем уверен, что понимаю вопрос. Тем не менее, я думаю, что вы хотите использовать строку для доступа к свойству объекта.

Javascript позволяет вам это как словарь:

text["head"] = "four score"; // set's "four score" to the head property of text

или

text[side] = "your selection"; // where side is a property name

Edit:

В ответ на ваши изменения было бы проще создать один объект с двумя свойствами и назначить каждому из этих свойств объект. Как следующее:

var text = {};
text.left = getHeadSelTail("left");
text.right = getHeadSelTail("right");

Теперь вы можете получить доступ к левой голове, используя

text.left.head = "four score";

И правую голову, используя

text.right.head = "erocs ruof";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...