使用JavaScript在Wix中输出文本框不生效问题求助
问题:Wix中计算结果无法显示到目标文本框
我尝试通过下拉框和文本框获取用户输入进行计算,但结果无法显示到目标文本框中。以下是我用于输出值的代码,但文本框并未发生变化:
$w("#text5").text = (100 * (1 - Treatment1Year1)) >= 90 ? ">90%" : (100 * (1 - Treatment1Year1)) <= 10 ? "<10%" : (100 * (1 - Treatment1Year1)) + "%"; $w("#text6").text = (100 * (1 - Treatment1Year3)) >= 90 ? ">90%" : (100 * (1 - Treatment1Year3)) <= 10 ? "<10%" : (100 * (1 - Treatment1Year3)) + "%"; $w("#text7").text = (100 * (1 - Treatment2Year1)) >= 90 ? ">90%" : (100 * (1 - Treatment2Year1)) <= 10 ? "<10%" : (100 * (1 - Treatment2Year1)) + "%"; $w("#text8").text = (100 * (1 - Treatment2Year3)) >= 90 ? ">90%" : (100 * (1 - Treatment2Year3)) <= 10 ? "<10%" : (100 * (1 - Treatment2Year3)) + "%";
我是JavaScript和Wix新手,恳请各位提供帮助。
可能的原因及解决方法
1. 输入变量未正确转换为数值
Treatment1Year1这类变量如果直接从文本框/下拉框获取,默认是字符串类型,会导致计算出错。需要转换为数字类型,同时处理非数字输入的情况:
// 示例:从文本框获取值并转换为数字,默认值设为0 const Treatment1Year1 = parseFloat($w("#treatment1Year1Input").value) || 0;
2. 代码未绑定触发事件
Wix中计算逻辑需要绑定到用户交互事件(比如输入框的onChange、按钮的onClick),否则代码只会在页面加载时执行一次。示例:
$w.onReady(function () { // 绑定输入框变化事件,实时计算 $w("#treatment1Year1Input").onUpdate(() => { const Treatment1Year1 = parseFloat($w("#treatment1Year1Input").value) || 0; $w("#text5").text = (100 * (1 - Treatment1Year1)) >= 90 ? ">90%" : (100 * (1 - Treatment1Year1)) <= 10 ? "<10%" : `${(100 * (1 - Treatment1Year1)).toFixed(1)}%`; }); });
3. 控件ID不匹配
检查#text5、#text6等文本框ID,是否与Wix编辑器中控件的实际ID完全一致(ID区分大小写)。
4. 调试排查问题
在代码中添加console.log(),打印变量值和计算结果,通过Wix开发者工具查看是否有错误或异常值:
console.log("Treatment1Year1值:", Treatment1Year1); console.log("计算结果:", 100*(1-Treatment1Year1));
内容的提问来源于stack exchange,提问作者Ralph Edmondson
相关产品推荐
相关产品推荐

