-1

真的那么难吗?我的google-fu是钝的吗?我怎么做一个取消按钮来取消脚本其余部分的执行?

我的剧本很笨。我不是一个好的编码员,我知道,但这就是我所拥有的:

我正在自动化 INDD CScloud。脚本首先打开一个窗口,操作员有选项作为单选按钮。底部是标准的“确定”和“取消”按钮,然后脚本具有一些根据窗口中显示的选项执行操作的功能。我想要发生的是当我点击“Canel”按钮时所有代码执行都停止。而已!没有什么花哨!但它似乎所做的只是关闭对话框窗口并继续而不注册更改。GRRR

这是我蹩脚的代码:

var asker = new Window ("dialog","Answer Some Stuff!");
    var firstselector = asker.add ("panel", undefined, "Which Thing First?")
        firstselector.alignChildren = "left"
        firstselector.preferredSize = [250,100]
        thing1a = typeselector.add ("radiobutton", undefined, "Thing 1a")
        thing2a = typeselector.add ("radiobutton", undefined, "Thing 2a")
        thing3a = typeselector.add ("radiobutton", undefined, "Thing 3a")
        thing1a.value = true;
    var secondselector = asker.add ("panel", undefined, "Which Thing Second?")
        secondselector.alignChildren = "left"
        secondselector.preferredSize = [250,100]
        thing1b = secondselector.add ("radiobutton", undefined, "Thing 1b")
        thing2b = secondselector.add ("radiobutton", undefined, "Thing 2b")
        thing3b = secondselector.add ("radiobutton", undefined, "Thing 3b")
        thing1b.value = true;
    var thirdselector = asker.add ("panel", undefined, "Do Thing Three?")
        thirdselector.alignChildren = "left"
        thirdelector.preferredSize = [250,75]
        certyes = thirdselector.add ("radiobutton", undefined, "Yes")
        thidno = thirdselector.add ("radiobutton", undefined, "No")
        thirdyes.value = true;
                asker.add ("button", undefined, "Do It!", {name: "ok"});
                asker.add ("button", undefined, "Cancel", {name: "cancel"});    
asker.show();

var mainPart = function(){
if (thing1a.value == true && thing1b.value == true)
{
do some stuff
}
if (thing2a.value == true && thing1b.value == true)
{
do some different stuff
}
})();
var secondPart = function(){
if (thing3.value == true && thing1b.value == true)
{
do this other stuff
}
if (thing3.value == true && thing2b.value == true)
{
do some other stuff entirely
}
alert("All The Stuff Is Done!");
}
)();

我想要发生的是,当操作员单击“取消”按钮时,脚本退出并且mainPartsecondPart执行。

我尝试使用 a .onClick,如下所示:

var cancelBtn = asker.add('button',undefined,'Cancel');
cancelBtn.preferredSize.width = 175;
cancelBtn.onClick=function(){
  exit();  
 }

但显然exit()是无效的,代码只是继续运行......所以我尝试break了,它关于“在循环外非法使用中断”的错误但随后继续执行其余代码......

请帮我不要那么笨。

4

1 回答 1

1

啊,你的自嘲让我笑了。

我去掉了你代码的第三部分(以简化和停止出错),并修复了一个类型-o(“thirdselector”而不是“thirdselector”)。此外,为了让事情顺利进行,我在第一部分将“typeselector”引用更改为“firstselector”。我注释掉了“做一些事情”行。然后我添加了我通常用来在我的脚本中获取取消功能的内容(“this.parent.close()”)

这是我的运行脚本,您可以使用它来到达您想要的位置。

[编辑 - 我添加了一些东西来演示如何让数据正确流动。请注意,关于取消按钮的原始问题已经得到解答。研究这个,你应该能够从中收集到基本但强大的想法。]

var asker = new Window ("dialog","Answer Some Stuff!");
    var firstselector = asker.add ("panel", undefined, "Which Thing First?")
        firstselector.alignChildren = "left"
        firstselector.preferredSize = [250,100]
        thing1a = firstselector.add ("radiobutton", undefined, "Thing 1a")
        thing2a = firstselector.add ("radiobutton", undefined, "Thing 2a")
        thing3a = firstselector.add ("radiobutton", undefined, "Thing 3a")
        thing1a.value = true;
    var secondselector = asker.add ("panel", undefined, "Which Thing Second?")
        secondselector.alignChildren = "left"
        secondselector.preferredSize = [250,100]
        thing1b = secondselector.add ("radiobutton", undefined, "Thing 1b")
        thing2b = secondselector.add ("radiobutton", undefined, "Thing 2b")
        thing3b = secondselector.add ("radiobutton", undefined, "Thing 3b")
        thing1b.value = true;

   var cancelBtn = asker.add('button',undefined,'Cancel');
   var okBtn = asker.add('button',undefined,'OK');
   cancelBtn.preferredSize.width = 175;

okBtn.onClick=function(){
  mainPart();
  this.parent.close();  
 }
cancelBtn.onClick=function(){
  this.parent.close();  
 }

asker.show();

var mainPart = function(){

if (thing1a.value == true && thing1b.value == true)
{
 alert('1a and 1b');

 } else if (thing2a.value == true && thing1b.value == true) {
  alert('2a and 1b');
} else {
    alert('something else');
//do some different stuff
}
}
于 2015-01-20T01:06:28.243 回答