Html Styles下任意一個復制樣式系統命名的問題:
當某個題中某個元素需要單獨設置CSS樣式時,復制一份全局樣式后,引用復制的那個樣式scale (2)會失效。
原因:系統默認生成的這個class名稱其實是兩個class名稱( class="scale (2)" ) , 所以我們引用這個樣式會失效。
解決方案:自己手動改個合適的單獨的class名稱。
手機端不能直接給input設置disabled屬性:
confirmit中由於PC端和手機端的某些設置不一樣,導致部分代碼在手機端執行后無效果。
<input type="radio" name="q88_1" id="q88_1_1" value="1">
<label id="q88_1_1_label">1</label>
在PC端中,以上兩個標簽都存在, 可以給PC端中的input設置disabled。
但是在手機端中, input 被設置為display:none; 而圖中的單選框其實是個背景圖。
創建的 if 判斷條件的區別:
在正常的 if( statement ) { /* 執行的代碼塊 */ } 中 , statement : 最終會轉換為 Boolean 值( true 或 false ) 來判斷是否要執行其下的代碼。
但是在confirmit中, 創建的 if 判斷條件 不能是單個的 數字 或 字符串。
當只獲取A1選中的個數(不管是0 ,還是1等)時,這里是不會將其轉換為 false 或 ture , 因而 i37題 在此類判斷條件下 永遠不會執行。
記錄於2020/09/23 . 如果后期哪位好友發現在此可以使用 f('A1').size() 當作判斷條件時,此筆記可以退休了,哈哈。
調用方法生成的數組調用sort(含有隨機排序函數參數)的區別:
在正常的array.sort() 中, 調用sort() 方法會改變 原數組,不會創建副本, 就算sort() 中含有 函數參數也一樣只改變原數組,
但是在confitmit平台中 你最好定義一個變量接收 隨機排序后的新數組。(特殊情況下不會改變原數組,會生成一個新數組)。
在第二張圖中可以清晰的看到,當調用該平台的數組使用 sort('隨機函數') 時,沒有改變原數組, 因此在此定義了一個新變量接收新數組。
注意: 目前只有該平台調用的數組 使用 含有隨機排序函數 參數 的sort() 方法才會不改變原 數組。
意思就是: 如果使用第一張圖中的 第8行的數組, 調用sort('隨機函數') 也還是只改變原數組。
如果使用第一張圖中的 第9 / 10 行類似的數組, 調用sort('隨機函數') 不會改變原數組, 會生成一個副本, 所以要用新變量接收它。
記錄於 2020/09/23 ,還有好多不一樣的,慢慢記錄下來,哈哈。
confirmit中any()方法參數問題:
confirmit中any()方法的參數目前最終只能是字符串形式。不過有種特殊的情況。
數字的話會報錯,比如報錯信息:CODED A1 does not implement any function。
特殊情況:
confitmit中none()方法:
舉例:
f('A1').none('1','2','3')
用法:如果A1題沒有選中1&&2&&3返回 true , 否則返回 false .
其中 none() 方法包括 此題沒有回答(==沒有選中指定參數),在添加邏輯代碼時要注意是否要加上此題被回答的條件: f('A1').toBoolean().
/* 簡單: 只考慮 A1 題的code=1,2,3 都沒選 */ f('A1').none('1','2','3') /* 復雜: 考慮A1題被回答了 且 A1 題的code=1,2,3 都沒選 ;(簡而言之就是A1題選中了其它選項)*/ f('A1').toBoolean() && f('A1').none('1','2','3')
confirmit中indexOf()方法:
來,先看個兩個截圖
而且如果在confirmit平台中使用了indexOf()方法,會有兩種報錯提醒~o.o~!
第二種:Error in validation script [B1]: Function expected
confirmit中 domainValues() 方法:
先來看下domainValues()方法的定義:
中文大致翻譯下: domainValues() 方法返回 要出示(顯示)選項 對應的 code 數組。如果出示的選項隨機了, 那么返回的codes也是隨機對應的。
舉例: 有四個選項 a ,b ,c , d 。 各自對應的code 為 1 ,2,3,4。
當只出示 a, c , d 三個選項時,domainValues() 返回的codes 只有由 1,3,4 這三個code組成的數組。
當隨機出示的順序為 a , c , d , b。 domainValues() 返回的codes 為 [ 1,3,4,2] 。
confirmit中3Dgrid題手機端的bug
3Dgrid題手機端的bug導致 點擊 ‘下一頁’ 無效 , 不能進入下一頁。
先看個圖:
在這個圖中, g332中的選項 含有分組 的選項, 其中含有 other 的選項, q333 和 q334 的masking由 g331 選項決定。g332下的題(指q333等)超過 1個 , 在手機端答題到 q331 或 g332 題被卡死,點擊 ‘下一頁’ 不能跳轉的 概率 高達 99.9%。 至今都是失敗!
記錄於 2020/11/09 ,或許在接下來的某個時間里 confirmit 平台的開發維護人員會修復這個bug 吧。
我又回來啦, 前幾天又碰到過這個bug, 經過同事的指點,又是一番測試, 最終定位到 bug 產生的兩大必要條件:3Dgrid(例如:g332) 中有分組, 子題(例如:q333,q334)的masking中 有出示此題的條件。
記錄於 2020/12/07 。
這個還是三個必要條件,詳情請看 https://www.cnblogs.com/FlyingLiao/p/13949471.html
confirmit中GetLeastFilledQuotaCodes()方法:
GetLeastFilledQuotaCodes(quotaName, n, codesArr):
quotaName:配額名稱
n: 挑選n個配額最小的選項
codesArr: 選中選項的code數組
舉例:從q37中挑選一個最小配額的選項放入q38。
f("q38").set(GetLeastFilledQuotaCodes('quota_q38', 1, f('q37').categories()).toString());
優點: 直接調用函數實現 獲取挑選n個配額最小的選項,高效快捷。
缺點:1.在正常的上線鏈接和測試短鏈接中正常使用,但是用測試長鏈接和在內部測試時 你將看不到q38有值,系統會給你發封郵件提醒你數據存儲成功。
2. 如果有其它題目與這個配額題作交叉,那這個函數就不是最佳的挑選最小配額的函數。
/* 挑選3個 */
f("q38").set(GetLeastFilledQuotaCodes('quota_q38', 3, f('q37').categories()));
記錄於 2020/12/15 。
confirmit中code的命名:
code的命名定義:Codes can only contain alphanumeric characters, with no white space.
定義中明確規定不允許空格,但是實際輸入(包含復制code進去時含有空格)空格會有兩種結果:
假設A1題的code==5有空格:
1. 會出現報錯語句: Following values were illegal: - 5 。
2. 不會出現報錯語句, 空格會保留。
當出現報錯語句時去掉空格就沒事了; 當沒出現報錯語句時,恰好 Validation 中或者 其它題目調用了 code==5, 例如:
if (f('A1').any('5')) {
/* 要執行的代碼塊 */ }
那么 就不會執行其中的代碼塊。
再舉個例子, 當A1的code==5 有空格, A2 的code==5 沒空格, A1、A2的邏輯是 如果A1 選中5,那么A2 就出示code==5的選項。
實際情況是A1 選中5 , A2 不會出示code==5的選項。
記錄於 2020/12/18 。
confirmit中set()方法:
/* 單選題圈選與清空 */
f('A1').set('1') /* A1題選中code==1 */ f('A1').set(null) /* A1題清空選中的內容 */ /* 多選題圈選與清除已經選中的某些選項 */ f('A2')['2'].set('1') /* A2題選中code==2 */ f('A2')['2'].set(null) /* A2題清除已經選中的code==2 */
當A2的選項是A1選項的母集,不詢問A2, 直接把A1選中的選項賦值給A2。
var codes=f('A1').categories();
for(var i=0; i<codes.length; i++){ f('A2')[codes[i]].set('1') } //如果是在A2題之前執行賦值 則可以使用如下代碼 f('A2').set(f('A1')) /* 為何要在題前才能使用此代碼呢? 因為如果在題后執行賦值代碼 f('A2').set(f('A1')) 時會先清空 A2題,再把 A1的答案賦值給A2。 這樣一來A2題人為選中的答案就會丟失。 */
這個題后 圈選會清除 人為選中答案 的發現多虧了 bert 同事,哈哈哈。 能接觸到confirmit的同行有興趣可以多去看看官方文檔資料。
記錄於2020/12/18。