2016-02-10 34 views
0

我的JavaScript在JSFiddle中工作,但不在LiveCycle Designer ES3中。我想要做的是当下拉列表中的字段在选择了默认选项以外的选项时(更改时)更改背景颜色。Javascript在Livecycle中不工作

function BackgroundChange(ddl) { 

var value = ddl.srcElement.options[ddl.srcElement.selectedIndex].value; 
var positionddlist = document.getElementById('positionddlist'); 

// 99 is the value assigned to the default option 
if (value !== "99") { 
alert('Changes from default values require comment.'); 
document.getElementById('positionddlist').style.backgroundColor = "orange"; 

} else { 
document.getElementById('positionddlist').style.backgroundColor = ""; 
} 
} 

建议?

+0

它具体如何不起作用?错误?意外的输出? – CollinD

+0

它根本不执行所需的操作。我没有收到错误或任何其他输出。它位于片段下拉列表的更改事件中。我试过把它作为一个脚本对象函数调用,但那也不起作用。 –

回答

1

恐怕我对你有一些坏消息。 LiveCycle Designer中可用的DOM代码不是HTML DOM,因此它不支持相同的方法和属性。在这种情况下,没有srcElement属性,也没有getElementById方法。

[LiveCycle Designer Scripting Reference][1]中列出了可用属性和方法的列表。

,以设置边框颜色最简单的方法是在对象通过,然后设置使用填充颜色的值,如:

DropDownList1.fillColor = "255,102,0"; 

就个人而言,我靠LiveCycle Designer中的对象上的很多帮助,指导我通过一个对象的属性。

+0

在脚本编辑器窗口中,您可以通过按下键盘上的CTRL或CTRL和SHIFT,然后单击要使用的对象来允许您想要引用的对象的名称被放入。 – greendave11

0

你可以直接写这个脚本“on”下的对象在下的“更改”事件。当编写脚本“on”对象时,关键字this变为绑定到对象。您可以使用下列内容:

if(this.rawValue!="99"){ 
    //this.fillColor should also work 
    this.border.fill.color.value = "255,255,0"; 
} 
else{ 
    this.border.fill.color.value = "0,0,0"; 
} 

如果你正在编写一个脚本对象功能,只需在XFA对象传递作为输入参数:

function changeDropDownFill(dropDown){ 
    if(this.rawValue!="99"){ 
     //this.fillColor should also work 
     dropDown.border.fill.color.value = "255,255,0"; 
    } 
    else{ 
     dropDown.border.fill.color.value = "0,0,0"; 
    } 
} 

而且从变化事件一样叫它所以:nameOfYourScriptObject.changeDropDownFill(this);