eval() 获取难以索引的对象

转载 2006年06月23日 11:32:00
文档对象模型(DOM)的问题之一是:有时你要获取你要求的
对象简直就是痛苦。例如,这里有一个函数询问用户要变换
哪个图象:变换哪个图象

 


  

你可以用下面这个函数:

      
function swapOne()
{
        var the_image = prompt("change parrot or cheese","");
        var the_image_object;

        if (the_image == "parrot")
        {
                the_image_object = window.document.parrot;
        }
  else {
                the_image_object = window.document.cheese;
        }

        the_image_object.src = "ant.gif";
}

连同这些image标记:

<img src="stuff3a/parrot.gif" name="parrot">
<img src="stuff3a/cheese.gif" name="cheese">

请注意象这样的几行语句:

      
the_image_object = window.document.parrot;

它把一个鹦鹉图象对象敷给了一个变量。虽然看起来有点
儿奇怪,它在语法上却毫无问题。但当你有100个而不是两个
图象时怎么办?你只好写上一大堆的 if-then-else语句,要是
能象这样就好了:

 

      
function swapTwo()
{
        var the_image = prompt("change parrot or cheese","");
        window.document.the_image.src = "ant.gif";
}

不幸的是, JavaScript将会寻找名字叫 the_image而不是你所希
望的"cheese"或者"parrot"的图象,于是你得到了错误信息:”
没听说过一个名为the_image的对象”。

 

还好,eval能够帮你得到你想要的对象。

   
function simpleSwap()
{
        var the_image = prompt("change parrot or cheese","");
        var the_image_name = "window.document." + the_image;
        var the_image_object = eval(the_image_name);
        the_image_object.src = "ant.gif";
}

如果用户在提示框里填入"parrot",在第二行里创建了一个字
符串即window.document.parrot. 然后包含了eval的第三
行意思是: "给我对象window.document.parrot" - 也就是
你要的那个图象对象。一旦你获取了这个图象对象,你可以把
它的src属性设为ant.gif. 有点害怕?用不着。其实这相当有
用,人们也经常使用它。

相关文章推荐

如何用eval来获取对象

JavaScript有许多小窍门来使编程更加容易。其中之一就是eval()函数,这个函数可以把一个字符串当作一个JavaScript表达式一样去执行它。举个例子: var uneveled...

为什么eval转换json对象字符串时要加括号?

在做与服务器交互数据的时候,我们通常会发起一个Ajax请求,然后服务器返回一个类似'{x:1,y:1}'结构的json字符串,为了方便客户端处理我们会将其转换为一个对象直接量 这很多的时候通过一...

# eval()函数的使用以及Json对象与Json字符串互转

eval()函数的使用以及Json对象与Json字符串互转

C# javascript 对象转换(Eval 函数)

这之中使用了以前一些js调用服务器端脚本代码。页面代码:如下http://www.w3.org/1999/xhtml">    无标题页           ...

黑马程序员_C#面向对象(值类型和引用类型,构造函数,常量与静态成员,命名空间,索引)

四.值类型和引用类型 namespace 值类型和引用类型 {     class Program     {       ...

Oracle数据库之对象视图、索引、序列、同义词

视图:语法:create [or replace] view viewname as sql语句 [with read only] [with check option...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)