1

所以下面的 JavaScript 代码是我用来从我们的自动化营销软件 Eloqua 中提取数据的代码。这适用于单选下拉菜单。我想要它做的是用于多选下拉菜单。

我知道 ProductValue 变量有效。因此,话虽如此,我很肯定它在 if(ProductValue == ProductList[i].value) 特别是“ .value ”中,因为这是在下拉菜单中调用值。有没有办法让这个倍数?这几天让我发疯了。

function CustomerInformation()

{

var ProductValue = "<span class=eloquaemail>MarketingCustomerInformation1</span>"; //Field Merge...Field merge is working
var ProductList = document.getElementById('C_Marketing_Customer_Information1').options; //Calling the contact record field

for(var i=0; i< ProductList.length; i++) 
    {       
        if(ProductValue == ProductList[i].value) 
            {
                document.getElementById('C_Marketing_Customer_Information1').value = ProductValue;
                break;
            }
        else 
            {
                document.getElementById('C_Marketing_Customer_Information1').value = "Select";
            }
    }   
}
4

1 回答 1

0

您可以使用多个 for 循环:

var ProductValue = "<span class=eloquaemail>MarketingCustomerInformation1</span>"; //Field Merge...Field merge is working
var ProductList = document.getElementById('C_Marketing_Customer_Information1').options; //Calling the contact record field

for(var i=0; i< ProductList.length; i++) 
{      
    for(var j=0;j<ProductValue.length;j++)
    {
        if(ProductValue[j] == ProductList[i].value) 
        {
          document.getElementById('C_Marketing_Customer_Information1').option[i].selected="selected";
        }
    }
}

还可以添加一个布尔变量来选择默认值,以便在未选择任何内容时使用。

基本理念

  • 第一个循环将遍历多选列表中的所有值。
  • 第二个循环将遍历您传递的所有值(这意味着 ProductValue 将需要是您要选择的所有值的数组)。
  • 如果第一个数组 (ProductList[i]) 中的当前项等于 (==) 第二个数组 (ProductValue[j]) 中的当前项,那么您将选项标记为已选择。

满足您的 JS 需求的一些有用工具:

  • 谷歌
  • W3Schools.com
  • Firebug(Firefox 插件,尽管大多数浏览器都有与 F12 相关的功能可以提供帮助,使用它来查看变量并逐步执行函数)
于 2013-02-20T23:07:24.850 回答