Показать сообщение отдельно
  #6 (permalink)  
Старый 27.12.2014, 18:22
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

Можно решить Вашу задачу "в лоб":
<html>
<head>

</head>
<body>


<div onclick="alert(byName(arr[1]))" style="width:40px; cursor:pointer; border:1px solid blue; text-align:center">OK</div>
<div onclick="alert(byName(arr[2]))" style="width:40px; cursor:pointer; border:1px solid blue; text-align:center">OK</div>
<div onclick="alert(byName(arr[3]))" style="width:40px; cursor:pointer; border:1px solid blue; text-align:center">OK</div>

<script>

byName=function(ob){
 for(var i in this){
   if(this[i]===ob) return i
}}

var stone = ["rubin", "almaz", "izumrud", "sapfir"]
var apple = ["green", "red", "bad"]
var error = ["text", "number", "img"]
 
var arr = ["", stone, apple, error]

</script>

</body>
</html>

Но такое решение может сказаться на производительности, поскольку в глобале может быть очень много имен, цикл будет проходить их все, пока не наткнется на нужный объект. К тому же, один и тот же объект может иметь несколько имен. Лучше сразу вынести определения массивов в отдельный неймспейс, если есть такая возможность.

Последний раз редактировалось krutoy, 27.12.2014 в 18:39.
Ответить с цитированием