它看起來像有使你的代碼不能工作了幾個問題。首先,讓我區分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