它看起来像有使你的代码不能工作了几个问题。首先,让我区分Quickbase中的“计算字段”和“公式字段”。计算字段在报告视图中定义(意味着它们只能在该报告中查看,而不能在其他报告中查看),并且不允许使用HTML。另一方面,公式字段与传统字段一样创建,并允许您选择允许某些HTML的复选框。您需要使用公式字段来获取代码以在窗体或报表中运行。您还需要确保在报告中显示该字段,否则代码将不会执行。
解决此问题后,您的脚本可能无法运行,因为Quickbase限制了允许的HTML标记。而不是改变图像,你会看到你的脚本文本显示在字段中。您可以通过将脚本放在IMG
元素的onload
标记中来解决此问题。这将产生不再要求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'));\">", "")
我测试上述公式在我自己的时间表报告中,并按预期工作。
编辑:
要排除clear2x2.gif形象,编辑源时自动间距Quickbase地方:
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'));\">", "")
我有一个小问题。时间线div中有两个img。 clear.gif和timeline.gif。我只需要更新timeline.gif。这是我到目前为止。如果([Task Name] =“Vacation”,“ td:has(div.timeline)> div.timeline> img:not([src^= /”/ i/clear2x2.gif /“])')。attr ('src',('https://images.quickbase.com/si/16/821-check_purple.png')); \“>”,“”) – JuniorFlip
由于我们下降到第三级引用"可以在你的src ^选择器中使用,以防止标签关闭怪异。顺便说一下,在替换图片时你仍然需要https://我编辑了包含更新代码的答案 –
我做了最后一个孩子, ([任务名称] =“假期”,“ td:has(div.timeline)> div.timeline> img:last-child')。attr('src',('https://images.quickbase.com/si/16/821-check_purple.png')); \“>”,“”) – JuniorFlip