You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Photoshop脚本多if语句仅执行首个真值语句问题求助

问题分析与解决方案

首先明确:这绝对不是JavaScript的特性——JS里独立的if语句只要条件为真就会依次执行,你遇到的问题是因为第一个if块里的操作直接修改了图层的尺寸和位置,导致后续if的判断条件不再成立了。

看你的代码细节:第一个if里执行了translate()和resizeBCenter(),这两个操作会实时改变当前图层的位置(比如layerBottom的数值)和尺寸(layerWidth的数值),而第二个if的判断完全依赖这些被修改后的变量。所以第一次运行时,第一个条件满足并执行后,图层状态已经变化,第二个条件自然不再成立;第二次运行时,图层是第一次修改后的状态,第一个条件可能不再触发,第二个条件才会生效。

要实现所有符合原始图层状态的条件都被执行,核心思路是:先把所有判断需要的变量值提前保存下来,基于图层的初始状态完成所有条件判断,再执行对应的操作。

修改后的代码示例:

// 第一步:提前保存所有原始状态的变量值,避免后续操作修改判断依据
const originalLayerSmaller = layerSmaller;
const originalLayerLeftIn = layerLeftIn;
const originalLayerRightIn = layerRightIn;
const originalLayerTopIn = layerTopIn;
const originalLayerBottomOut = layerBottomOut;
const originalLayerWidth = layerWidth;
const originalDocWidth = docWidth;
const originalLayerTopOut = layerTopOut;
const originalLayerBottomOut = layerBottomOut;
const originalLayerLeftOut = layerLeftOut;
const originalRmargin = Rmargin;
const originalDocHeight = docHeight;
const originalLayerHeight = layerHeight;

// 基于原始状态判断第一个条件并执行
if (originalLayerSmaller && originalLayerLeftIn && originalLayerRightIn && originalLayerTopIn && originalLayerBottomOut) {
    activeDocument.activeLayer.translate(0, originalDocHeight - originalLayerBottom + 2);
    const percentageChange = ((originalDocHeight / originalLayerHeight) * 101);
    resizeBCenter(percentageChange);
}

// 基于原始状态判断第二个条件并执行
if (originalLayerWidth <= originalDocWidth && originalLayerTopOut && originalLayerBottomOut && originalLayerLeftOut && originalLayerRightIn && originalRmargin >= 65) {
    const percentageChange = ((originalDocWidth / originalLayerWidth) * 101);
    resizeTLeft(percentageChange);
    app.activeDocument.selection.selectAll();
    align('AdCH');
    align('AdCV');
    app.activeDocument.selection.deselect();
}

补充提示:

如果你的resizeBCenter或resizeTLeft这类自定义函数会切换当前活动图层,记得在操作前用变量保存当前活动图层,操作后再切回来,避免后续代码误操作其他图层。

内容的提问来源于stack exchange,提问作者Justin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:55:35