【问题标题】:How do you integrate a string into a javascript function name?如何将字符串集成到 javascript 函数名称中?
【发布时间】:2026-02-11 07:30:01
【问题描述】:

我很难弄清楚这一点。我是一个对 JS 几乎一无所知的 php 人,所以请放轻松 ;-)

所以基本上,我有一个包含 4 个 iframe 的页面。在某些情况下,我需要链接来同时更改两个 iframe。到目前为止,我一直在使用我在网上找到的这个脚本:

<script language="javascript">
function loadTwo(iframe1URL, iframe2URL)
    {
    parent.main.location.href=iframe1URL;
    parent.right.location.href=iframe2URL;
    }
</script>

效果很好。

但是,我现在面临的情况是,我需要修改“左”和“主”,而不是更改“主”和“右”iframe。对于所有其他情况,我确实需要保留上述内容。

所以,我写了这个:

<script language="javascript">
var jssec = "<?php echo $section;?>";
var jslet = "<?php echo $flett;?>";

if(jssec == 'showlist' && jslet != '')
    {
    var panel1 = 'left';
    var panel2 = 'main';
    }
else
    {
    var panel1 = 'main';
    var panel2 = 'right';
    }

function loadTwo(iframe1URL, iframe2URL)
    {
    parent.panel1.location.href=iframe1URL;
    parent.panel2.location.href=iframe2URL;
    }
</script>

第一部分工作正常。但是该功能本身不再起作用。我猜我没有正确整合字符串。

我试过用谷歌搜索,但我发现的结果略有不同,比如字符串包含函数的名称,这不是我在这里所拥有的......

那么我怎样才能让 panel1 和 panel2 在这个函数中工作呢?

谢谢!

【问题讨论】:

    标签: javascript php iframe


    【解决方案1】:

    使用数组表示法:

     parent[panel1].location.href=iframe1URL;
           ^------^
    

    这让panel1 被视为一个变量,而不是一个“键”名称。例如这两者在执行方面是相同的:

     parent['panel1']
     parent.panel1
    

    【讨论】:

    • 谢谢,马克。这确实似乎解决了这个问题,但是我现在遇到了第二个问题,在某些情况下我得到了意想不到的结果(即在错误的 iframe 中打开的链接)......它可能与此无关,并且可能是由代码中的其他内容引起的,目前还不确定,仍在挖掘...
    【解决方案2】:

    您似乎遇到了范围问题!

    一定要在函数之外声明变量。

    //declare them here!!
    var panel1;
    var panel2;
    
    if (blah) {
        panel1 = "something";
        panel2 = "somethingelse";
    } else {
        //other option
    }
    
    //continue code
    

    初始化变量将只是空桶,直到您将某些内容放入其中,但是对于接受负数组索引的语言,我认为这不足为奇:P

    然后该函数应该能够读取它们。如果不能,请像处理其他数据一样将它们传递给函数的参数。

    【讨论】:

    • panel1 和 panel2 已被声明为外部函数; loadTwo() 应该可以正常访问它们。