Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   for...in (https://javascript.ru/forum/misc/1432-a.html)

Хранитель Света 17.07.2008 13:54

for...in
 
Скрипт предназначен для того ,что бы пользователь ввел значение объекта,а программа бы пересчитала все properties этого объекта и вывела их на на укран в при помощ созднанного элемента "текст".Но у меня проблема,скрипт этого не делает. На сколько я понимаю проблема в несовпадении типов объекта,тоесть почему то он не воспринимает введенное имя объкта и не обрабатывает это значение в функции show(obj,objName). можете подсказать почему так происходит и как сделать так,что бы функции принимала это значение как аргумент?
Вот скрипт с хтмл:


<html>
<head>
<script>
   function showP(obj,objName) {
   var result = "";
   //var obj=document.getElementById("objV").value;
   //var objName=document.getElementById("objNameV").value;

     for(var i in obj){
      result += objName + "." + i + "=" + obj[i] + "\n";
      }
    return result;
   }
   var k=1;
   function creatT(){
    //var objS=function(){
      //obj1 = document.getElementById("objV").value;
      //return obj1;
      //}
   var objS = document.getElementById("objV").value;
   alert(objS);

   var objNameS=document.getElementById("objNameV").value;
    alert(objNameS);
    while(k==1){
    var txt=document.createTextNode(showP(objS,objNameS));
    //var txt=document.createTextNode("nnn");
    document.getElementById('nnn').appendChild(txt);
    k=2;
    alert("done1");
    }
    alert("done");
   }
 </script>


</head>
<body>
 <div id="nnn" style="width:300">
 </div>
 <form>
  <input type="button" value="Creat" onClick="creatT()">
  <input id="objV" type="text" size="10">
  <input id="objNameV" type="text" size="10">

 </form>
</body>
</html>

Kolyaj 17.07.2008 14:34

Убедительная просьба: перечитывайте свои сообщения после постинга. Есть ведь кнопочка "ред.".

Да, и запятые, на самом деле, придумали не для того, чтобы детей в школе мучать, а чтобы текст можно было читать.

Хранитель Света 17.07.2008 15:33

Ну вроде бы как отредактировал теперь можете подсказать?

Gvozd 17.07.2008 15:35

ага. есть еще теги для размещения КОДА.
так как сижу из инет клуба, то мне очень неприятно читать такой листинг.
ЗЫ. подсказать не могу, так как "из инет-клуба сижу"

Хранитель Света 17.07.2008 16:26

Тем не менее ,уважаемый Gvosd, я на вас расчитую, вы мне не в малом помогли до этого случая. Поэтому я на вас расчитую)

Хранитель Света 17.07.2008 16:40

Нет все таки немного протупил заработался))не работает

Gvozd 18.07.2008 14:31

в файрфоксе работает, в опере нет.
чо-то я без пол-лииттры не врубаюсь(((
сори

Гость 19.07.2008 13:36

Цитата:

Сообщение от Gvozd (Сообщение 3724)
в файрфоксе работает, в опере нет.
чо-то я без пол-лииттры не врубаюсь(((
сори

Ну в опере работать не будет потому что он не поддерживает тег <div> меня больше интересует передается ли значение из поля как аргумент для функции?

Хранитель Света 19.07.2008 16:59

Да а вот в лисе он выдает совсем не то что я от него ожидал.Вообще рекомендую посмотреть в ие

Андрей Параничев 19.07.2008 20:22

Гость,
Цитата:

Ну в опере работать не будет потому что он не поддерживает тег <div>
Глупость.

Хранитель Света,
Вы можете обращаться к элементам объекта, если имя элемента - переменная, через квадратные скобки. Поскольку все объекты на самом деле являются дочерними к объекту window, вы можете воспользоваться таким кодом, который, впрочем, не будет работать с объектами, объявленными локально:
function getObjectPropertiesByName(objName)
{
    result = "";
    
    // Если запрошен не window
    if(objName != "window")
    {
        // Если такой объект существует
        if(typeof window[objName] == "object")
        {
            // Получаем его свойства, как элемента объекта window
            for(var i in window[objName])
            {
                result += objName +"."+ i +" = "+ window[objName][i] + ";\n";
            }
        } else {
            return false;
        }
    } else {
        // Иначе, выводим свойства объекта window
        for(var i in window)
        {
            result += objName +"."+ i +" = "+ window[i] + ";\n";
        }
    }
    
    return result;
}

var myTestObj = {
    some: "thing",
    hello: "world"
}

alert(getObjectPropertiesByName("myTestObj"));

У вас не должно возникнуть проблем в адаптации под свои нужды. Кроме того, идею можно развить, позволив, например, получать свойства дважды вложенных объектов, например "document.body".


Часовой пояс GMT +3, время: 03:32.