看起来有几个问题导致您的代码无法工作。首先,让我对 Quickbase 中的“计算字段”和“公式字段”进行区分。计算字段在报表视图中定义(意味着它们只能在该报表中查看,而不能在其他报表中查看)并且不允许使用 HTML。另一方面,公式字段像传统字段一样创建,允许您选择允许某些 HTML 的复选框。您需要使用公式字段来获取要在表单或报表中运行的代码。您还需要确保该字段在您的报告中可见,否则代码将不会被执行。
一旦解决了这个问题,您的脚本可能不会运行,因为 Quickbase 限制了允许的 HTML 标记。无需更改图像,您只会看到该字段中显示的脚本文本。您可以通过将脚本放在元素的onload
标记中来解决此问题。IMG
这将产生不再需要document.ready(function(){});
正确执行的附加效果。
最后,最后一个问题是选择器。即使您使用附加到特定记录的公式字段,脚本本身也会为整个页面执行。为了仅选择img
任务名称为“假期”的记录的元素,您需要一种区分行的方法。幸运的是,时间线报告将每一行都包含在div
一个 ID 为“rid”+记录 ID 中。
所以,如果你把所有这些放在一起,你应该最终得到一个公式文本字段,并选中“允许在字段中插入一些 HTML 标记”,并将其作为公式:
If([Task Name]="Vacation", "<img qbu=\"module\" src=\"/i/clear2x2.gif\" onload=\"javascript:$('#rid" & [Record ID#] & " > td:has(div.timeline) > div.timeline > img').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png'));\">", "")
我在自己的时间线报告中测试了上述公式,它按预期工作。
编辑:
要排除 Quickbase 在编辑源代码时自动放置间距的 clear2x2.gif 图像:
If([Task Name]="Vacation", "<img qbu=\"module\" src=\"/i/clear2x2.gif\" onload=\"javascript:$('#rid" & [Record ID#] & " > td:has(div.timeline) > div.timeline > img:not([src^="/i/clear2x2.gif"])').attr('src',('https://images.quickbase.com/si/16/821-check_purple.png'));\">", "")