x

Các chương chính

  1. Đám mây LimeSurvey vs LimeSurvey CE
  2. LimeSurvey Cloud - Hướng dẫn bắt đầu nhanh
  3. LimeSurvey CE - Lắp đặt
  4. Cách thiết kế một cuộc khảo sát tốt (Hướng dẫn)
  5. Bắt đầu
  6. Cấu hình LimeSurvey
  7. Cấu hình LimeSurvey
  8. Giới thiệu - Khảo sát
  9. Xem menu khảo sát
  10. Xem cấu trúc khảo sát
  11. Giới thiệu - Câu hỏi
  12. Introduction - Question Groups
  13. Introduction - Surveys - Management
  14. Survey toolbar options
  15. Multilingual survey
  16. Quick start guide - ExpressionScript
  17. Advanced features
  18. General FAQ
  19. Troubleshooting
  20. Workarounds
  21. License
  22. Version change log
  23. Plugins - Advanced
 Actions

ExpressionScript How-tos/vi: Difference between revisions

From LimeSurvey Manual

Maren.fritz (talk | contribs)
Created page with "Cách thực hiện ExpressionScript"
 
Maren.fritz (talk | contribs)
Created page with "Khi bạn thực sự chỉnh sửa câu hỏi, câu hỏi sẽ trông như thế này:"
 
(72 intermediate revisions by the same user not shown)
Line 3: Line 3:




=Overview of what has been previously explained=
=Tổng quan về những gì đã được giải thích trước đây=




If you have followed so far the structure of the LimeSurvey manual, it means that you already the [[ExpressionScript - Presentation#Key_Definitions|LimeSurvey terminology]]. Next, we covered expressions and variables in order to learn how to enhance our surveys. In the next part, we moved to the types and meanings of [[ExpressionScript - Presentation#Syntax Highlighting|syntax highlighting]] to learn how to correct syntax errors.  
Nếu bạn đã theo dõi cấu trúc của sổ tay LimeSurvey cho đến nay, điều đó có nghĩa là bạn đã có [[ExpressionScript - Bản trình bày#Key_Definitions|thuật ngữ LimeSurvey]]. Tiếp theo, chúng tôi đề cập đến các biểu thức và biến để tìm hiểu cách cải thiện các cuộc khảo sát của mình. Trong phần tiếp theo, chúng ta đã chuyển sang các loại và ý nghĩa của [[ExpressionScript - Bản trình bày#Đánh dấu cú pháp|Đánh dấu cú pháp]] để tìm hiểu cách sửa lỗi cú pháp.  


With these basic notions covered, we could move towards examples and explaining how expressions work within LimeSurvey.  
Với những khái niệm cơ bản này, chúng ta có thể chuyển sang các ví dụ và giải thích cách hoạt động của các biểu thức trong LimeSurvey.  




=Syntax Highlighting=
=Đánh dấu cú pháp=




The following screenshots give examples, but do not show the values of the tooltips. A tooltip is an informative box which is displayed whenever you hover the mouse over any bold colored words.
Các ảnh chụp màn hình sau đây đưa ra ví dụ nhưng không hiển thị giá trị của chú giải công cụ. Chú giải công cụ là một hộp thông tin được hiển thị bất cứ khi nào bạn di chuột qua bất kỳ từ màu đậm nào.


Because of this syntax highlighting, it is very easy to compose correct expressions, even the ones that are complicated. Although the LimeSurvey team plans to try to build an Expression Builder GUI, you can use the existing syntax-highlighting to quickly identify and fix typos. You can also use the tooltips to validate the accuracy of your expressions (e.g., confirm you have selected the desired variable(s)).
Do tính năng tô sáng cú pháp này nên rất dễ dàng soạn thảo các biểu thức chính xác, ngay cả những biểu thức phức tạp. Mặc dù nhóm LimeSurvey có kế hoạch cố gắng xây dựng GUI Trình tạo biểu thức nhưng bạn có thể sử dụng tính năng tô sáng cú pháp hiện có để nhanh chóng xác định và sửa lỗi chính tả. Bạn cũng có thể sử dụng chú giải công cụ để xác thực tính chính xác của biểu thức (ví dụ: xác nhận rằng bạn đã chọn (các) biến mong muốn).


In each of the examples, there are three columns:
Trong mỗi ví dụ, có ba cột:
#Source - this is the raw text that you would enter into the LimeSurvey question field
#Source - đây là văn bản thô mà bạn sẽ nhập vào trường câu hỏi LimeSurvey
#Pretty Print - this is the syntax-highlighted equivalent of what you entered
#Pretty Print - đây là văn bản tương đương được đánh dấu bằng cú pháp với những gì bạn đã nhập
#*Note that Expressions are shown with a tan background, but not surrounded by curly braces in this highlighting.
#*Lưu ý rằng Biểu thức được hiển thị với nền màu nâu vàng, nhưng không được bao quanh bởi dấu ngoặc nhọn trong phần tô sáng này.
#*Since EM supports recursive substitution, showing curly braces in the highlighting would cause syntax errors
#*EM hỗ trợ thay thế đệ quy nên việc hiển thị dấu ngoặc nhọn trong phần tô sáng sẽ gây ra lỗi cú pháp
#Result - this is the output generated when EM processes the source
#Result - đây là đầu ra được tạo ra khi EM xử lý nguồn
#*Everything that can be properly substituted is
#*Mọi thứ có thể được thay thế chính xác là
#*Expressions with errors are shown in-line, with syntax highlighting. Errors are surrounded by a red-lined box.
#*Các biểu thức có lỗi được hiển thị nội dòng, kèm theo cú pháp tô sáng. Các lỗi được bao quanh bởi một hộp có dòng kẻ màu đỏ.




==Proper Syntax==
==Cú pháp đúng==




You may find below examples of proper syntax:
Bạn có thể tìm thấy các ví dụ bên dưới về cú pháp thích hợp:
#Values: shows that known variables are color coded according to whether are set on the current page. Old-style INSERTANS:xxxx gets its own color-coding style
#Values: cho biết các biến đã biết được mã hóa màu tùy theo việc có được đặt trên trang hiện tại hay không. INSERTANS kiểu cũ:xxxx có kiểu mã hóa màu riêng
#Question Attributes: shows that dot notation can access some properties of questions
#Thuộc tính câu hỏi: cho biết ký hiệu dấu chấm có thể truy cập một số thuộc tính của câu hỏi
#Math: shows that basic and complex calculations are supported
#Math: cho biết các phép tính cơ bản và phức tạp đều được hỗ trợ
#TextProcessing: shows some of the available text-processing functions
#TextProcessing: hiển thị một số hàm xử lý văn bản có sẵn
#Dates: shows two of the available date-related functions
#Dates: hiển thị hai trong số các hàm liên quan đến ngày có sẵn
#Conditional: shows the usage of the if() function. The choices can be nested.
#Conditional: hiển thị cách sử dụng hàm if(). Các lựa chọn có thể được lồng vào nhau.
#Tailored paragraph: you can completely customize a report based upon prior values
#Đoạn phù hợp: bạn hoàn toàn có thể tùy chỉnh một báo cáo dựa trên các giá trị trước đó
#EM processes within strings: shows that it can do substitutions within strings. This example generates a tailored image name.
#EM xử lý trong chuỗi: cho thấy rằng nó có thể thực hiện thay thế trong chuỗi. Ví dụ này tạo ra một tên hình ảnh phù hợp.
#EM doesn't process curly braces like these: shows that if the curly braces are escaped, or there is a white space between the expression and the curly braces, ES ignores the expression.
#EM không xử lý các dấu ngoặc nhọn như sau: cho thấy rằng nếu các dấu ngoặc nhọn được thoát hoặc có khoảng trắng giữa biểu thức và dấu ngoặc nhọn, ES sẽ bỏ qua biểu thức.




Line 46: Line 46:




==EM Syntax Containing Errors==
==Cú pháp EM có lỗi==




Here are examples of common errors when typing ES expressions. Note that the tooltips provide additional information.
Dưới đây là ví dụ về các lỗi thường gặp khi gõ biểu thức ES. Lưu ý rằng chú giải công cụ cung cấp thông tin bổ sung.
#Inline Javascript that forgot to add spaces after curly brace
#Javascript nội tuyến đã quên thêm dấu cách sau dấu ngoặc nhọn
#*Since "document.write" appears right after a curly brace, EM thinks it is an expression, and red-boxes "document" and "write" since they are undefined variable and functions, respectively
#*"document.write" xuất hiện ngay sau dấu ngoặc nhọn nên EM cho rằng đó là một biểu thức và màu đỏ- hộp "tài liệu" "ghi" vì chúng lần lượt là các biến và hàm không xác định
#Unknown/Misspelled variables, functions and operators
#Các biến, hàm và toán tử không xác định/sai chính tả
#*Here we forgot that we are using the variable name "gender" instead of "sex", but EM catches that error. It also red-boxes '++', since that is not a supported operator.
#*Ở đây chúng ta quên rằng chúng ta đang sử dụng tên biến "giới tính" thay vì " sex”, nhưng EM đã mắc phải lỗi đó. Nó cũng đánh dấu vào ô màu đỏ '++', vì đó không phải là toán tử được hỗ trợ.
#Warns if use = instead of eq, or perform value assignments
#Cảnh báo nếu sử dụng = thay vì eq hoặc thực hiện các phép gán giá trị
#*Note that the '=' and '+=' are in red text instead of black. If you hover the mouse over them, you will see warnings that you are assigning a value.
#*Lưu ý rằng '=' '+=' có chữ màu đỏ thay vì màu đen. Nếu bạn di chuột qua chúng, bạn sẽ thấy cảnh báo rằng bạn đang gán một giá trị.
#Wrong number of arguments for functions
#Sai số lượng đối số cho hàm
#*if() takes 3 arguments, but it has been given 4, so hovering over the red-boxed "if" will explain the error and show the supported syntax
#*if() nhận 3 đối số, nhưng nó đã được cho 4, vì vậy việc di chuột trên "if" được đóng hộp màu đỏ sẽ giải thích lỗi và hiển thị cú pháp được hỗ trợ
#*sum() takes an unlimited number of arguments, but we had a trailing comma before the closing parentheses, so that is red-boxed
#*sum() nhận số lượng đối số không giới hạn, nhưng chúng tôi có dấu phẩy ở cuối trước dấu ngoặc đơn đóng, vì vậy nó được đóng hộp màu đỏ
#Mismatched parentheses
#Dấu ngoặc đơn không khớp
#*This is one of the most common errors when writing expressions.
#*Đây là một trong những lỗi phổ biến nhất khi viết biểu thức.
#*This shows two examples of missing closing parentheses, and one example of having one too many closing parentheses.
#*Điều này cho thấy hai ví dụ về việc thiếu dấu ngoặc đơn đóng và một ví dụ về việc có quá nhiều dấu ngoặc đơn đóng.
#Unsuported syntax
#Cú pháp không được hỗ trợ
#*If you use an operator or punctuation that ES does not support, it will red-box it.
#*Nếu bạn sử dụng một toán tử hoặc dấu câu mà ES không hỗ trợ, nó sẽ đánh dấu màu đỏ.
#Invalid assignments
#Bài tập không hợp lệ
#*Some variables are readWrite and can have their values changed. Others are read-only.
#*Một số biến là readWrite và có thể thay đổi giá trị của chúng. Một số khác ở chế độ chỉ đọc.
#*If you try to change the value of a read-only variable, you can't. EM will red-box the attempt.
#*Nếu bạn cố gắng thay đổi giá trị của biến chỉ đọc, bạn không thể. EM sẽ đánh dấu lần thử vào hộp đỏ.
#*If you try to assign a value to an equation or a string, you will also get an error
#*Nếu bạn cố gán một giá trị cho một phương trình hoặc một chuỗi, bạn cũng sẽ gặp lỗi




Line 73: Line 73:




=="Live" examples of Syntax Highlighting with active tooltips==
== Ví dụ "trực tiếp" về Đánh dấu cú pháp bằng chú giải công cụ đang hoạt động==




<table border="1">
<table border="1">
<tr><th>Source</th><th>Pretty Print</th><th>Result</th></tr><tr><td><b>Here is an example of OK syntax with tooltips</b><br>Hello {if(gender=='M','Mr.','Mrs.')} {surname}, it is now {date('g:i a',time())}. Do you know where your {sum(numPets,numKids)} children and pets are?
<tr><th> Nguồn</th><th> In đẹp</th><th> Kết quả</th></tr><tr><td> <b>Dưới đây là ví dụ về cú pháp OK với chú giải công cụ</b><br> Xin chào {if(gender=='M','Mr.','Mrs.')} {họ}, bây giờ là {date('g:i a',time())}. Bạn có biết con cái và thú cưng {sum(numPets,numKids)} của bạn ở đâu không?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span style="background-color: #eee8aa;"><span title="Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span>(<span title="[java61764X1X5][G:2][Q:110]: What is your gender (male/female)?; value=M" style="color: green; font-weight: bold">gender</span> == <span title="" style="color: gray">'M'</span>,<span title="" style="color: gray">'Mr.'</span>,<span title="" style="color: gray">'Mrs.'</span>)</span> <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:20]: What is your last/surname?; value=Smith" style="color: green; font-weight: bold">surname</span></span>, it is now <span style="background-color: #eee8aa;"><span title="Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span>(<span title="" style="color: gray">'g:i a'</span>,<span title="Return current UNIX timestamp; number time()" style="color: blue; font-weight: bold">time</span>())</span>. Do you know where your <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span> children and pets are?
</td><td><b>Dưới đây là ví dụ về cú pháp OK với chú giải công cụ</b><br> Xin chào nếu họ ( giới <span style="background-color: #eee8aa;"><span title="[java61764X1X1] [G:1] [Q:20]: Họ/họ của bạn là gì?; giá trị=Smith" style="color: green; font-weight: bold">tính</span></span> <span style="background-color: #eee8aa;"><span title="Kiểu Excel if(test,result_if_true,result_if_false); if(kiểm tra,kết quả_if_true,kết quả_if_false)" style="color: blue; font-weight: bold">==</span> <span title="[java61764X1X5][G:2][Q:110]: Giới tính của bạn (nam/nữ) là gì?; giá trị=M" style="color: green; font-weight: bold">'</span> <span title="" style="color: gray">M'</span> , <span title="" style="color: gray">'Mr.'</span> , <span title="" style="color: gray">''</span> )</span> thì bây giờ là <span style="background-color: #eee8aa;"><span title="Định dạng ngày/giờ địa phương; chuỗi ngày (định dạng [, dấu thời gian=thời gian()])" style="color: blue; font-weight: bold">ngày</span> ( <span title="" style="color: gray">'g:i a'</span> , <span title="Trả về dấu thời gian UNIX hiện tại; số thời gian()" style="color: blue; font-weight: bold">thời gian</span> ())</span> . Bạn có biết <span style="background-color: #eee8aa;"><span title="Tính tổng các giá trị trong một mảng; tổng số(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">tổng số</span> trẻ em và thú cưng của bạn ( <span title="[java61764X1X4][G:2][Q:50]: Bạn có bao nhiêu thú cưng?; giá trị=1" style="color: maroon; font-weight: bold">numPets</span> , <span title="[java61764X1X3][G:2][Q:40]: Bạn có bao nhiêu đứa con?; giá trị = 2" style="color: green; font-weight: bold">numKids</span> )</span> ở đâu không?


</td><td><b>Here is an example of OK syntax with tooltips</b><br>Hello <span id="LEMtailor_Q_40_1">Mr.</span> <span id="LEMtailor_Q_40_2">Smith</span>, it is now 6:07 am. Do you know where your <span id="LEMtailor_Q_40_4">3</span> children and pets are?
</td><td><b>Dưới đây là ví dụ về cú pháp OK với chú giải công cụ</b><br> Xin chào <span id="LEMtailor_Q_40_1">ông</span> <span id="LEMtailor_Q_40_2">Smith</span> , bây giờ là 6:07 sáng. Bạn có biết <span id="LEMtailor_Q_40_4">3</span> đứa con và thú cưng của mình ở đâu không?
</td></tr>
</td></tr>  
<tr><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: {notSetYet}<br>Unknown Function: {iff(numPets&gt;numKids,1,2)}<br>Unknown Variable: {sum(age,num_pets,numKids)}<br>Wrong # parameters: {sprintf()},{if(1,2)},{date()}<br>Assign read-only-vars:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br>Unbalanced parentheses: {pow(3,4},{(pow(3,4)},{pow(3,4))}
<tr><td> <b>Dưới đây là các lỗi thường gặp để bạn có thể xem chú giải công cụ</b><br> Các biến được sử dụng trước khi chúng được khai báo: {notSetYet}<br> Chức năng không xác định: {iff(numPets>numKids,1,2)}<br> Biến không xác định: {sum(age,num_pets,numKids)}<br> Sai # tham số: {sprintf()},{if(1,2)},{date()}<br> Chỉ định các biến chỉ đọc:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}<br> Dấu ngoặc đơn không cân bằng: {pow(3,4},{(pow(3,4)},{pow(3,4))}


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Dưới đây là các lỗi thường gặp để bạn có thể xem chú giải công cụ</b><br> Các biến được sử dụng trước khi chúng được khai báo: <span style="background-color: #eee8aa;"><span title="Biến này không được khai báo cho đến trang sau; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Biến này không được khai báo cho đến trang sau; Không phải là biểu thức hợp lệ; [java61764X3X6][G:3][Q:200]: Ai sẽ thắng trong cuộc bầu cử tiếp theo?; giá trị=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span><br> Chức năng không xác định: <span style="background-color: #eee8aa;"><span title="Hàm không xác định" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm không xác định" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Bạn có bao nhiêu thú cưng?; giá trị=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Bạn có bao nhiêu đứa con?; giá trị = 2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Biến không xác định: <span style="background-color: #eee8aa;"><span title="Tính tổng các giá trị trong một mảng; tổng số(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">tổng</span> ( <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> , <span title="Biến không xác định" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Biến không xác định" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Bạn có bao nhiêu đứa con?; giá trị = 2" style="color: green; font-weight: bold">numKids</span> )</span><br> Sai # tham số: <span style="background-color: #eee8aa;"><span title="Hàm phải có ít nhất 1 đối số; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm phải có ít nhất 1 đối số; Không phải là biểu thức hợp lệ; Trả về một chuỗi được định dạng; chuỗi sprintf(định dạng, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="Hàm không hỗ trợ số lượng đối số đó: 2. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 3; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm không hỗ trợ số lượng đối số đó: 2. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 3; Không phải là biểu thức hợp lệ; Kiểu Excel if(test,result_if_true,result_if_false); if(kiểm tra,kết quả_if_true,kết quả_if_false)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="Hàm không hỗ trợ số lượng đối số đó: 0. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 1,2; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm không hỗ trợ số lượng đối số đó: 0. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 1,2; Không phải là biểu thức hợp lệ; Định dạng ngày/giờ địa phương; chuỗi ngày (định dạng [, dấu thời gian=thời gian()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Chỉ định các biến chỉ đọc: <span style="background-color: #eee8aa;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ; ; giá trị=công nhân" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Gán giá trị mới cho một biến" style="color: red; font-weight: bold">+=</span> 10</span> , <span style="background-color: #eee8aa;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ; [java61764X1X1][G:1][Q:10]: Tên/tên thật của bạn là gì?; giá trị=Peter" style="color: green; font-weight: bold">name</span></span> <span title="Gán giá trị mới cho một biến" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span><br> Dấu ngoặc đơn không cân bằng: <span style="background-color: #eee8aa;"><span title="Dấu ngoặc đơn không cân bằng" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Dấu ngoặc đơn không cân bằng; biểu thức hàm mũ; số pow(cơ sở, điểm kinh nghiệm)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Dấu ngoặc đơn không cân bằng" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="biểu thức hàm mũ; số pow(cơ sở, điểm kinh nghiệm)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="biểu thức hàm mũ; số pow(cơ sở, điểm kinh nghiệm)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Đã phát hiện dấu ngoặc đơn bên phải" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td><td><b>Here are common errors so you can see the tooltips</b><br>Variables used before they are declared: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="This variable is not declared until a later page; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="This variable is not declared until a later page; Not a valid expression; [java61764X3X6][G:3][Q:200]: Who will win the next election?; value=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br>Unknown Function: <span style="background-color: #eee8aa;"><span title="Undefined function" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined function" style="color: blue; font-weight: bold">iff</span></span>(<span title="[java61764X1X4][G:2][Q:50]: How many pets do you have?; value=1" style="color: maroon; font-weight: bold">numPets</span> &gt; <span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>,1,2)</span><br>Unknown Variable: <span style="background-color: #eee8aa;"><span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Undefined variable" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Undefined variable" style="color: red; font-weight: bold">num_pets</span></span>,<span title="[java61764X1X3][G:2][Q:40]: How many kids do you have?; value=2" style="color: green; font-weight: bold">numKids</span>)</span><br>Wrong # parameters: <span style="background-color: #eee8aa;"><span title="Function must have at least 1 argument(s); Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function must have at least 1 argument(s); Not a valid expression; Return a formatted string; string sprintf(format, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span>()</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 2. Function supports this many arguments, where -1=unlimited: 3; Not a valid expression; Excel-style if(test,result_if_true,result_if_false); if(test,result_if_true,result_if_false)" style="color: blue; font-weight: bold">if</span></span>(1,2)</span>,<span style="background-color: #eee8aa;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Function does not support that number of arguments: 0. Function supports this many arguments, where -1=unlimited: 1,2; Not a valid expression; Format a local date/time; string date(format [, timestamp=time()])" style="color: blue; font-weight: bold">date</span></span>()</span><br>Assign read-only-vars:<span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; ; value=worker" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">+=</span>10</span>,<span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="The value of this variable can not be changed; Not a valid expression" style="border-style: solid; border-width: 2px; border-color: red;"><span title="The value of this variable can not be changed; Not a valid expression; [java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span></span><span title="Assigning a new value to a variable" style="color: red; font-weight: bold">=</span><span title="" style="color: gray">'Sally'</span></span></span><br>Unbalanced parentheses: <span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Parentheses not balanced; Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span></span>(3,4</span>,<span style="background-color: #eee8aa;"><span title="Parentheses not balanced" style="border-style: solid; border-width: 2px; border-color: red;">(</span><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)</span>,<span style="background-color: #eee8aa;"><span title="Exponential expression; number pow(base, exp)" style="color: blue; font-weight: bold">pow</span>(3,4)<span title="Extra right parentheses detected" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>
</td><td><b>Dưới đây là các lỗi thường gặp để bạn có thể xem chú giải công cụ</b><br> Các biến được sử dụng trước khi chúng được khai báo: <span id="LEMtailor_Q_40_5"><span style="background-color: #eee8aa;"><span title="Biến này không được khai báo cho đến trang sau; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Biến này không được khai báo cho đến trang sau; Không phải là biểu thức hợp lệ; [java61764X3X6][G:3][Q:200]: Ai sẽ thắng trong cuộc bầu cử tiếp theo?; giá trị=?" style="color: #FF00FF ; font-weight: bold">notSetYet</span></span></span></span><br> Chức năng không xác định: <span style="background-color: #eee8aa;"><span title="Hàm không xác định" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm không xác định" style="color: blue; font-weight: bold">iff</span></span> ( <span title="[java61764X1X4][G:2][Q:50]: Bạn có bao nhiêu thú cưng?; giá trị=1" style="color: maroon; font-weight: bold">numPets</span> > <span title="[java61764X1X3][G:2][Q:40]: Bạn có bao nhiêu đứa con?; giá trị = 2" style="color: green; font-weight: bold">numKids</span> ,1,2)</span><br> Biến không xác định: <span style="background-color: #eee8aa;"><span title="Tính tổng các giá trị trong một mảng; tổng số(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">tổng</span> ( <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> , <span title="Biến không xác định" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Biến không xác định" style="color: red; font-weight: bold">num_pets</span></span> , <span title="[java61764X1X3][G:2][Q:40]: Bạn có bao nhiêu đứa con?; giá trị = 2" style="color: green; font-weight: bold">numKids</span> )</span><br> Sai # tham số: <span style="background-color: #eee8aa;"><span title="Hàm phải có ít nhất 1 đối số; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm phải có ít nhất 1 đối số; Không phải là biểu thức hợp lệ; Trả về một chuỗi được định dạng; chuỗi sprintf(định dạng, arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sprintf</span></span> ()</span> , <span style="background-color: #eee8aa;"><span title="Hàm không hỗ trợ số lượng đối số đó: 2. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 3; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm không hỗ trợ số lượng đối số đó: 2. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 3; Không phải là biểu thức hợp lệ; Kiểu Excel if(test,result_if_true,result_if_false); if(kiểm tra,kết quả_if_true,kết quả_if_false)" style="color: blue; font-weight: bold">if</span></span> (1,2)</span> , <span style="background-color: #eee8aa;"><span title="Hàm không hỗ trợ số lượng đối số đó: 0. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 1,2; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Hàm không hỗ trợ số lượng đối số đó: 0. Hàm hỗ trợ nhiều đối số này, trong đó -1=unlimited: 1,2; Không phải là biểu thức hợp lệ; Định dạng ngày/giờ địa phương; chuỗi ngày (định dạng [, dấu thời gian=thời gian()])" style="color: blue; font-weight: bold">date</span></span> ()</span><br> Chỉ định các biến chỉ đọc: <span style="background-color: #eee8aa;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ; ; giá trị=công nhân" style="color: #996600; font-weight: bold">TOKEN:ATTRIBUTE_1</span></span> <span title="Gán giá trị mới cho một biến" style="color: red; font-weight: bold">+=</span> 10</span> , <span id="LEMtailor_Q_40_12"><span style="background-color: #eee8aa;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Giá trị của biến này không thể thay đổi; Không phải là biểu thức hợp lệ; [java61764X1X1] [G:1] [Q:10]: Tên/tên thật của bạn là gì?; giá trị=Peter" style="color: green; font-weight: bold">name</span></span> <span title="Gán giá trị mới cho một biến" style="color: red; font-weight: bold">=</span> <span title="" style="color: gray">'Sally'</span></span></span><br> Dấu ngoặc đơn không cân bằng: <span style="background-color: #eee8aa;"><span title="Dấu ngoặc đơn không cân bằng" style="border-style: solid; border-width: 2px; border-color: red;"><span title="Dấu ngoặc đơn không cân bằng; biểu thức hàm mũ; số pow(cơ sở, điểm kinh nghiệm)" style="color: blue; font-weight: bold">pow</span></span> (3,4</span> , <span style="background-color: #eee8aa;"><span title="Dấu ngoặc đơn không cân bằng" style="border-style: solid; border-width: 2px; border-color: red;">(</span> <span title="biểu thức hàm mũ; số pow(cơ sở, điểm kinh nghiệm)" style="color: blue; font-weight: bold">pow</span> (3,4)</span> , <span style="background-color: #eee8aa;"><span title="biểu thức hàm mũ; số pow(cơ sở, điểm kinh nghiệm)" style="color: blue; font-weight: bold">pow</span> (3,4) <span title="Đã phát hiện dấu ngoặc đơn bên phải" style="border-style: solid; border-width: 2px; border-color: red;">)</span></span>


</td></tr>
</td></tr>
<tr><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': {min(++age, --age,age % 2);}<br>Nor '|', '&amp;', '^': {(sum(2 | 3,3 &amp; 4,5 ^ 6)}}<br>Nor arrays: {name[2], name['mine']}
<tr><td> <b>Đây là một số cú pháp không được hỗ trợ</b><br> Không hỗ trợ cho '++', '--', '%',';': {min(++age, --age,age % 2);}<br> Cũng không phải '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}<br> Cũng không phải mảng: {name[2], name['mine']}
</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td> <b>Đây là một số cú pháp không được hỗ trợ</b><br> Không hỗ trợ cho '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Tìm giá trị thấp nhất; số tối thiểu(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> , <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> , <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Cũng không phải '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Tính tổng các giá trị trong một mảng; tổng số(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">tổng</span> (2 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Cũng không phải mảng: <span style="background-color: #eee8aa;"><span title="[java61764X1X1] [G:1] [Q:10]: Tên/tên thật của bạn là gì?; giá trị=Peter" style="color: green; font-weight: bold">tên</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1] [G:1] [Q:10]: Tên/tên thật của bạn là gì?; giá trị=Peter" style="color: green; font-weight: bold">tên</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'của tôi'</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td><td><b>Here is some of the unsupported syntax</b><br>No support for '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Find lowest value; number min(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span>(<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ++ </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> -- </span><span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span>,<span title="[java61764X1X2][G:2][Q:30]: How old are you?; value=45" style="color: green; font-weight: bold">age</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> % </span>2)<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ; </span></span><br>Nor '|', '&amp;', '^': <span style="background-color: #eee8aa;">(<span title="Calculate the sum of values in an array; number sum(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">sum</span>(2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> | </span>3,3<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> &amp; </span>4,5<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ^ </span>6)</span>}<br>Nor arrays: <span style="background-color: #eee8aa;"><span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span>2<span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span>,<span title="[java61764X1X1][G:1][Q:10]: What is your first/given name?; value=Peter" style="color: green; font-weight: bold">name</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> [ </span><span title="" style="color: gray">'mine'</span><span title="Unsupported syntax" style="border-style: solid; border-width: 2px; border-color: red;"> ] </span></span>
</td><td><b>Đây là một số cú pháp không được hỗ trợ</b><br> Không hỗ trợ cho '++', '--', '%',';': <span style="background-color: #eee8aa;"><span title="Tìm giá trị thấp nhất; số tối thiểu(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">min</span> ( <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">++</span> <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> , <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">--</span> <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> , <span title="[java61764X1X2] [G:2] [Q:30]: Bạn bao nhiêu tuổi?; giá trị=45" style="color: green; font-weight: bold">age</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">%</span> 2) <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">;</span></span><br> Cũng không phải '|', '&', '^': <span style="background-color: #eee8aa;">( <span title="Tính tổng các giá trị trong một mảng; tổng số(arg1, arg2, ... argN)" style="color: blue; font-weight: bold">tổng</span> (2 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">|</span> 3,3 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">&</span> 4,5 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">^</span> 6)</span> }<br> Cũng không phải mảng: <span style="background-color: #eee8aa;"><span title="[java61764X1X1] [G:1] [Q:10]: Tên/tên thật của bạn là gì?; giá trị=Peter" style="color: green; font-weight: bold">tên</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">[</span> 2 <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">]</span> , <span title="[java61764X1X1] [G:1] [Q:10]: Tên/tên thật của bạn là gì?; giá trị=Peter" style="color: green; font-weight: bold">tên</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">[</span> <span title="" style="color: gray">'của tôi'</span> <span title="Cú pháp không được hỗ trợ" style="border-style: solid; border-width: 2px; border-color: red;">]</span></span>


</td></tr>
</td></tr>
Line 99: Line 99:




=Tailoring Examples (e.g. extending {INSERTANS:xxx})=
=Ví dụ về may đo (ví dụ: mở rộng {INSERTANS:xxx})=




=="Dear {Mr}/{Mrs} Smith..."==
=="Kính gửi {Mr}/{Mrs} Smith..."==




Use the if() function to conditionally choose whether to display 'Mr.' or 'Mrs.'.
Sử dụng hàm if() để chọn có điều kiện xem có hiển thị 'Mr.' hay không hoặc '.'.


The syntax is if(test,do_if_true,do_if_false).
Cú pháp là if(test,do_if_true,do_if_false).


{|
{|
|#||Code||Question||Type
|#||||Câu hỏi||Loại
|-
|-
|1||gender||What is your gender?||Gender
|1||giới tính||Giới tính của bạn là gì?||Giới tính
|-
|-
|2||example1||Dear {if(gender=='M','Mr.','Mrs.')} Smith, ...||Long free text
|2| |example1||Kính gửi {if(gender=='M','Mr.','Mrs.')} Smith, ...||Văn bản dài miễn phí
|}
|}


Line 121: Line 121:




As it can be observed below, "Mr" and "Mrs" are tailored to what the respondent selects as answer to question "gender".
Như có thể thấy bên dưới, "Ông" "" được điều chỉnh theo những gì người trả lời chọn làm câu trả lời cho câu hỏi "giới tính".




Line 128: Line 128:




=="Dear {Mr}/{Mrs} Smith..." in invitation email==
=="Kính gửi {Mr}/{Mrs} Smith..." trong email mời==




You can use the example above in the invitation email using attributes from the token table. Use the if() function to choose whether 'Mr.' or 'Mrs.' should be used in the email.
Bạn có thể sử dụng ví dụ trên trong email mời bằng cách sử dụng các thuộc tính từ bảng mã thông báo. Sử dụng hàm if() để chọn xem 'Mr.' hoặc '.' nên được sử dụng trong email.




The syntax is "if(test,do_if_true,do_if_false)".
Cú pháp là "if(test,do_if_true,do_if_false)".


{|
{|
|#||attribute||value
|#||thuộc tính||value
|-
|-
|1||Last name||Smith
|1||Họ||Smith
|-
|-
|2||Email address||test@test.com
|2||Địa chỉ email||test@test. com
|-
|-
|3||ATTRIBUTE_2||M
|3||ATTRIBUTE_2||M
Line 147: Line 147:




Text in invitation email:
Nội dung trong email mời:


<syntaxhighlight lang="php">
<syntaxhighlight lang="php">


Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},
Kính gửi {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},


you have been invited to participate in a survey:
bạn đã được mời tham gia vào một cuộc khảo sát:


https:/...
https:/...
Line 163: Line 163:




email View:
email Xem:




Line 169: Line 169:




=Calculation / Assessment Examples=
=Ví dụ về tính toán/đánh giá=




==Calculate assessment values at runtime and store the results in the survey data==
==Tính toán giá trị đánh giá trong thời gian chạy và lưu trữ kết quả vào dữ liệu khảo sát==




This example uses all of EM's features, including Relevance, Tailoring, and the Equation question type.
Ví dụ này sử dụng tất cả các tính năng của EM, bao gồm loại câu hỏi Mức độ liên quan, Điều chỉnh và Phương trình.


It also shows that all of them are JavaScript-enabled, so if you have these features on a page, it will dynamically change as people set and change their answers.
Nó cũng cho thấy rằng tất cả chúng đều hỗ trợ JavaScript, vì vậy nếu bạn có những tính năng này trên một trang, nó sẽ tự động thay đổi khi mọi người đặt và thay đổi câu trả lời của họ.


{|
{|
|#||Code||Question||Type||Relevance
|#||||Câu hỏi||Loại||Mức độ liên quan
|-
|1||numKids||How many children do you have?||Numerical input||1
|-
|2||kid1||How old is your first child?||Numerical input||numKids >= 1
|-
|-
|3||kid2||How old is your second child?||Numerical input||numKids >= 2
|1||numKids||Bạn có bao nhiêu đứa con?||Đầu vào số||1!N !|-
|2||kid1||Con đầu lòng của bạn bao nhiêu tuổi?||Nhập số||numKids >= 1
|-
|-
|4||kid3||How old is your third child?||Numerical input||numKids >= 3
|3||kid2||Con thứ hai của bạn bao nhiêu tuổi? child?||Đầu vào số||numKids >= 2
|-
|-
|5||kid4||How old is your fourth child?||Numerical input||numKids >= 4
|4||kid3||Con thứ ba của bạn bao nhiêu tuổi?||Đầu vào số||numKids >= 3
|-! N!|5||kid4||Con thứ tư của bạn bao nhiêu tuổi?||Đầu vào số||numKids >= 4
|-
|-
|6||sumKidAges||{sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)}||Equation||1
|6||sumKidAges||{sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)}||Equation||1
|-
|-
|7||kidSummary||You said that you have {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')}||Text display||1
|7||kidSummary||Bạn nói rằng bạn có {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','Tổng số tuổi của những đứa trẻ ',min(numKids,4),' đầu tiên của bạn là ',sumKidAges,'.'),' ')}||Hiển thị văn bản| |1
|}
|}




To download this example, please click on the following link: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].
Để tải xuống ví dụ này, vui lòng nhấp vào liên kết sau: [[Media:Assessments_survey_example.zip|Assessments_survey_example]].




You may find below screenshots of representative questions. As you can see, EM syntax-highlights all fields that might contain tailoring. Here, you see examples of syntax-highlighting Relevance, the Equation question type, and substitutions within a question. You can also use substitutions within Help, Group header display, Welcome message, and End message.
Bạn có thể tìm thấy ảnh chụp màn hình bên dưới của các câu hỏi đại diện. Như bạn có thể thấy, cú pháp EM làm nổi bật tất cả các trường có thể chứa thông tin chỉnh sửa. Tại đây, bạn sẽ thấy các ví dụ về mức độ liên quan làm nổi bật cú pháp, loại câu hỏi Phương trình và các thay thế trong một câu hỏi. Bạn cũng có thể sử dụng các thay thế trong Trợ giúp, Hiển thị tiêu đề nhóm, Thông báo chào mừng và Thông báo kết thúc.


In the next example, since the relevance is {numKids >= 2), the question will only be visible if the respondent reports that she has at least two children.
Trong ví dụ tiếp theo, vì mức độ liên quan là {numKids >= 2), nên câu hỏi sẽ chỉ hiển thị nếu người trả lời cho biết cô ấy có ít nhất hai con.




Line 209: Line 207:




Below, you may observe that each variable has the .NAOK suffix attached to it. This is because of how EM supports cascading relevance. If you did not have .NAOK, then the sum would only be computed if the person said she has 4 children (e.g., if all of the variables are relevant). The usage of .NAOK means that we want to compute the sum even if all or some of the variables are irrelevant (e.g., "Not Applicable" (NA) is alright (OK)).
Dưới đây, bạn có thể quan sát thấy mỗi biến đều có hậu tố .NAOK được đính kèm. Điều này là do cách EM hỗ trợ mức độ liên quan theo tầng. Nếu bạn không có .NAOK thì tổng sẽ chỉ được tính nếu người đó nói rằng cô ấy có 4 người con (ví dụ: nếu tất cả các biến đều có liên quan). Việc sử dụng .NAOK có nghĩa là chúng tôi muốn tính tổng ngay cả khi tất cả hoặc một số biến không liên quan (ví dụ: "Không áp dụng" (NA) vẫn ổn (OK)).


However, the .NAOK attribute only affects whether variables are passed into EM. If the respondent initially says she has 3 children, and enters ages for each, then changes her mind and says she has 2, we don't want to see the sum of the 3 entered values - since the third child is "not applicable" in our case anymore:
Tuy nhiên, thuộc tính .NAOK chỉ ảnh hưởng đến việc các biến có được truyền vào EM hay không. Nếu người trả lời ban đầu nói rằng cô ấy có 3 đứa con và nhập tuổi cho mỗi đứa con, sau đó đổi ý và nói rằng cô ấy có 2 đứa con, thì chúng tôi không muốn xem tổng của 3 giá trị đã nhập - vì đứa con thứ ba "không áp dụng được" trong trường hợp của chúng tôi nữa:




Line 217: Line 215:




Each separate Expression is color coded with a tan background. As you can see, there are three separate Expressions here. The last one contains a message that is conditionally shown only if the person has more than one child.
Mỗi Biểu thức riêng biệt được mã hóa bằng màu với nền màu nâu. Như bạn có thể thấy, có ba Biểu thức riêng biệt ở đây. Cái cuối cùng chứa một thông báo chỉ được hiển thị có điều kiện nếu người đó có nhiều hơn một đứa con.




Line 223: Line 221:




Now, here are screenshots of the survey in action.
Bây giờ, đây là ảnh chụp màn hình của cuộc khảo sát đang diễn ra.


When you first visit the page, you see this. Note that is says "You have 0 '''children'''" instead of "You have 0 '''child'''".
Khi bạn truy cập trang lần đầu tiên, bạn sẽ thấy điều này. Lưu ý rằng "Bạn có 0 '''con'''" thay vì "Bạn có 0 '''con'''".




Line 231: Line 229:




If I change the value for number of children to 1, the display instantly changes to this, even though it is on the same page:
Nếu tôi thay đổi giá trị của số lượng trẻ em thành 1, màn hình sẽ ngay lập tức thay đổi thành giá trị này, ngay cả khi nó ở trên cùng một trang:




Line 237: Line 235:




Now notice that the grammar is correct: "You have 1 '''child'''".
Bây giờ chú ý rằng ngữ pháp đã đúng: "Bạn có 1 '''con'''".


Now I change the value for number of children to 3, and the display instantly changes to this.
Bây giờ tôi thay đổi giá trị của số trẻ em thành 3 và màn hình ngay lập tức thay đổi thành giá trị này.


Notice that you now see the conditional message at the bottom:  "The sum of ages of your first 3 kids is 0.".
Lưu ý rằng bây giờ bạn thấy thông báo có điều kiện ở phía dưới: "Tổng số tuổi của 3 đứa con đầu lòng của bạn là 0".




Line 247: Line 245:




Now I'll enter ages for my imaginary children, and I get this display, summing up their ages:
Bây giờ tôi sẽ nhập độ tuổi cho những đứa trẻ tưởng tượng của mình và tôi nhận được màn hình này, tổng hợp độ tuổi của chúng:




Line 253: Line 251:




Again, the score and display updates instantly as I enter the values, so you can use this to show a running total of an Assessment Score.
Một lần nữa, điểm số và màn hình hiển thị cập nhật ngay lập tức khi tôi nhập các giá trị, vì vậy bạn có thể sử dụng điểm này để hiển thị tổng điểm Đánh giá hiện tại.




Now, I change the value for the number of children to 2. The display has changed to this:
Bây giờ, tôi thay đổi giá trị của số lượng trẻ em thành 2. Màn hình đã thay đổi như sau:




Line 262: Line 260:




Notice that although I had entered a value of 5.5 for the third child, the report now only sums the values of my first 2 children.
Lưu ý rằng mặc dù tôi đã nhập giá trị 5,5 cho đứa con thứ ba nhưng báo cáo hiện chỉ tính tổng giá trị của 2 đứa con đầu tiên của tôi.


The reason for this is that the 3rd value is now irrelevant, and irrelevant values are actively ignored by EM.
Lý do cho điều này là giá trị thứ 3 hiện không còn phù hợp và các giá trị không liên quan sẽ bị EM chủ động bỏ qua.


If I were to change the number of kids back to 3, I would see the value of 5.5 I entered again. So, I don't lose any information I enter on the page.
Nếu tôi thay đổi số lượng trẻ em về 3, tôi sẽ thấy giá trị 5,5 mà tôi đã nhập lại. Vì vậy, tôi không bị mất bất kỳ thông tin nào tôi nhập trên trang.


However, if I navigate to the Next or Previous page, all irrelevant values will be NULLed out in the session and in the database. So, if I were to keep the value at 2, go to the next page, and then come back and state that I actually have 3 kids, I would no longer see the age of 5.5.
Tuy nhiên, nếu tôi điều hướng đến trang Tiếp theo hoặc Trước đó, tất cả các giá trị không liên quan sẽ bị loại bỏ trong phiên và trong cơ sở dữ liệu. Vì vậy, nếu tôi giữ giá trị ở mức 2, hãy chuyển sang trang tiếp theo, sau đó quay lại và nói rằng tôi thực sự có 3 đứa con, tôi sẽ không còn thấy số 5,5 nữa.




==Enter data and see a dynamically changing report of what was entered on the same page==
==Nhập dữ liệu và xem báo cáo thay đổi linh hoạt về nội dung đã nhập trên cùng một trang==




This example presents the Tailoring process within LimeSurvey.
Ví dụ này trình bày quy trình May đo trong LimeSurvey.


To download this example, click on the following link: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Dynamic changes survey example]].
Để tải xuống ví dụ này, hãy nhấp vào liên kết sau: [[Media:Dynamic_change_of_the_report_when_data_is_entered_on_the_same_page_survey.zip|Ví dụ khảo sát về thay đổi động]].


Here is what the page looks like initially. You only see the question asking what city you live in:
Đây là giao diện ban đầu của trang. Bạn chỉ thấy câu hỏi hỏi bạn sống ở thành phố nào:




Line 284: Line 282:




Once you start to enter an answer, the tailoring process is also starting:
Khi bạn bắt đầu nhập câu trả lời, quá trình điều chỉnh cũng bắt đầu:


<center>[[File:em-on_page_report-usage-2.jpg]]</center>
<center>[[Tập tin:em-on_page_report-usage-2.jpg]]</center>




As you enter answers, the table at the bottom of the page is updated to show the answer codes and values of your responses.
Khi bạn nhập câu trả lời, bảng ở cuối trang sẽ được cập nhật để hiển thị mã câu trả lời và giá trị câu trả lời của bạn.




<center>[[File:em-on_page_report-usage-3.jpg]]</center>
<center>[[Tập tin:em-on_page_report-usage-3.jpg]]</center>


=Common Debugging Examples=
=Các ví dụ gỡ lỗi phổ biến=




==Nested if() Statements (Conditional Logic)==
==Câu lệnh if() lồng nhau (Logic có điều kiện)==




EM supports the function "if(test,do_if_true,do_if_false)" so that you can perform conditional logic or tailoring. This function can be nested to do the equivalent of "if { } else if { } else {  }". EM will let you know if the parentheses are not balanced (e.g., you are missing a closing right parenthesis), or if you have any extra right parentheses. You should try to count the parentheses as you compose long nested if statements, save it, check for syntax errors, and fix them if any are found. Let's check together the below example.  
EM hỗ trợ chức năng "if(test,do_if_true,do_if_false)" để bạn có thể thực hiện logic điều kiện hoặc điều chỉnh. Hàm này có thể được lồng vào nhau để thực hiện tương đương với "if { } else if { } else { }". EM sẽ cho bạn biết nếu dấu ngoặc đơn không cân bằng (ví dụ: bạn thiếu dấu ngoặc đơn đóng bên phải) hoặc nếu bạn có thêm bất kỳ dấu ngoặc đơn bên phải nào. Bạn nên cố gắng đếm các dấu ngoặc đơn khi soạn các câu lệnh if lồng nhau dài, lưu nó, kiểm tra lỗi cú pháp và sửa chúng nếu tìm thấy. Chúng ta hãy cùng nhau kiểm tra ví dụ dưới đây.  


The group of questions used below can be accessed from here: [[Media:Example_tailoring_group11.zip|Tailoring survey example.lsg]]
Bạn có thể truy cập nhóm câu hỏi được sử dụng bên dưới từ đây: [[Media:Example_tailoring_group11.zip|Mayoring Survey example.lsg]]




First, with nothing entered, you just see "Hello."
Đầu tiên, không cần nhập gì, bạn chỉ thấy "Xin chào".




Line 311: Line 309:




If you enter a name, it says, "Hello {name}."
Nếu bạn nhập tên, nó sẽ hiển thị "Xin chào {name}."




Line 317: Line 315:




If you enter an age, you get a tailored message, depending upon whether you are a pre-school-age child or not:
Nếu bạn nhập độ tuổi, bạn sẽ nhận được thông báo phù hợp, tùy thuộc vào việc bạn có phải là trẻ ở độ tuổi mẫu giáo hay không:




Line 323: Line 321:




School aged, teenager, or adult. Here is a  teenager who wants to be anonymous:
Ở độ tuổi đi học, thiếu niên hoặc người lớn. Đây là một thiếu niên muốn giấu tên:




Line 329: Line 327:




Here is the logic file of the group. As you can see in the "if-based" question, there are nested if statements based upon the person's age.
Đây là tập tin logic của nhóm. Như bạn có thể thấy trong câu hỏi "if-based", có các câu lệnh if lồng nhau dựa trên tuổi của người đó.




<center>[[File:em-nested-if-logic-file.jpg]]</center>
<center>[[Tập tin:em-nested-if-logic-file.jpg]]</center>




When you are originally editing this question, it is likely that at some point, you will have the wrong number of parentheses. Here's what happens if you have too few:
Khi bạn chỉnh sửa câu hỏi này ban đầu, rất có thể tại một thời điểm nào đó, bạn sẽ sử dụng sai số dấu ngoặc đơn. Đây là những gì sẽ xảy ra nếu bạn có quá ít:




Line 341: Line 339:




If you hover over the word "if", which is surrounded by a red box, it says "Parentheses not balanced". In this case, there should be four closing parentheses after "already an adult!", but there are only three.
Nếu bạn di chuột qua từ "if" được bao quanh bởi hộp màu đỏ, nó sẽ báo "Dấu ngoặc đơn không cân bằng". Trong trường hợp này, cần có bốn dấu ngoặc đơn đóng sau "đã là người lớn!", nhưng chỉ có ba dấu ngoặc đơn.


If, on the other hand, you have an extra right parenthesis, it will be surrounded by a red box, like this:
Mặt khác, nếu bạn có thêm dấu ngoặc đơn bên phải, nó sẽ được bao quanh bởi một hộp màu đỏ, như thế này:




Line 349: Line 347:




When you are actually editing the question, the question looks like this:
Khi bạn thực sự chỉnh sửa câu hỏi, câu hỏi sẽ trông như thế này:




<center>[[File:em-nested-if-edit-screen.jpg]]</center>
<center>[[File:em-nested-if-edit-screen.jpg]]</center>

Latest revision as of 18:17, 15 January 2024


Tổng quan về những gì đã được giải thích trước đây

Nếu bạn đã theo dõi cấu trúc của sổ tay LimeSurvey cho đến nay, điều đó có nghĩa là bạn đã có thuật ngữ LimeSurvey. Tiếp theo, chúng tôi đề cập đến các biểu thức và biến để tìm hiểu cách cải thiện các cuộc khảo sát của mình. Trong phần tiếp theo, chúng ta đã chuyển sang các loại và ý nghĩa của Đánh dấu cú pháp để tìm hiểu cách sửa lỗi cú pháp.

Với những khái niệm cơ bản này, chúng ta có thể chuyển sang các ví dụ và giải thích cách hoạt động của các biểu thức trong LimeSurvey.


Đánh dấu cú pháp

Các ảnh chụp màn hình sau đây đưa ra ví dụ nhưng không hiển thị giá trị của chú giải công cụ. Chú giải công cụ là một hộp thông tin được hiển thị bất cứ khi nào bạn di chuột qua bất kỳ từ màu đậm nào.

Do tính năng tô sáng cú pháp này nên rất dễ dàng soạn thảo các biểu thức chính xác, ngay cả những biểu thức phức tạp. Mặc dù nhóm LimeSurvey có kế hoạch cố gắng xây dựng GUI Trình tạo biểu thức nhưng bạn có thể sử dụng tính năng tô sáng cú pháp hiện có để nhanh chóng xác định và sửa lỗi chính tả. Bạn cũng có thể sử dụng chú giải công cụ để xác thực tính chính xác của biểu thức (ví dụ: xác nhận rằng bạn đã chọn (các) biến mong muốn).

Trong mỗi ví dụ, có ba cột:

  1. Source - đây là văn bản thô mà bạn sẽ nhập vào trường câu hỏi LimeSurvey
  2. Pretty Print - đây là văn bản tương đương được đánh dấu bằng cú pháp với những gì bạn đã nhập
    • Lưu ý rằng Biểu thức được hiển thị với nền màu nâu vàng, nhưng không được bao quanh bởi dấu ngoặc nhọn trong phần tô sáng này.
    • Vì EM hỗ trợ thay thế đệ quy nên việc hiển thị dấu ngoặc nhọn trong phần tô sáng sẽ gây ra lỗi cú pháp
  3. Result - đây là đầu ra được tạo ra khi EM xử lý nguồn
    • Mọi thứ có thể được thay thế chính xác là
    • Các biểu thức có lỗi được hiển thị nội dòng, kèm theo cú pháp tô sáng. Các lỗi được bao quanh bởi một hộp có dòng kẻ màu đỏ.


Cú pháp đúng

Bạn có thể tìm thấy các ví dụ bên dưới về cú pháp thích hợp:

  1. Values: cho biết các biến đã biết được mã hóa màu tùy theo việc có được đặt trên trang hiện tại hay không. INSERTANS kiểu cũ:xxxx có kiểu mã hóa màu riêng
  2. Thuộc tính câu hỏi: cho biết ký hiệu dấu chấm có thể truy cập một số thuộc tính của câu hỏi
  3. Math: cho biết các phép tính cơ bản và phức tạp đều được hỗ trợ
  4. TextProcessing: hiển thị một số hàm xử lý văn bản có sẵn
  5. Dates: hiển thị hai trong số các hàm liên quan đến ngày có sẵn
  6. Conditional: hiển thị cách sử dụng hàm if(). Các lựa chọn có thể được lồng vào nhau.
  7. Đoạn phù hợp: bạn hoàn toàn có thể tùy chỉnh một báo cáo dựa trên các giá trị trước đó
  8. EM xử lý trong chuỗi: cho thấy rằng nó có thể thực hiện thay thế trong chuỗi. Ví dụ này tạo ra một tên hình ảnh phù hợp.
  9. EM không xử lý các dấu ngoặc nhọn như sau: cho thấy rằng nếu các dấu ngoặc nhọn được thoát hoặc có khoảng trắng giữa biểu thức và dấu ngoặc nhọn, ES sẽ bỏ qua biểu thức.



Cú pháp EM có lỗi

Dưới đây là ví dụ về các lỗi thường gặp khi gõ biểu thức ES. Lưu ý rằng chú giải công cụ cung cấp thông tin bổ sung.

  1. Javascript nội tuyến đã quên thêm dấu cách sau dấu ngoặc nhọn
    • Vì "document.write" xuất hiện ngay sau dấu ngoặc nhọn nên EM cho rằng đó là một biểu thức và màu đỏ- hộp "tài liệu" và "ghi" vì chúng lần lượt là các biến và hàm không xác định
  2. Các biến, hàm và toán tử không xác định/sai chính tả
    • Ở đây chúng ta quên rằng chúng ta đang sử dụng tên biến "giới tính" thay vì " sex”, nhưng EM đã mắc phải lỗi đó. Nó cũng đánh dấu vào ô màu đỏ '++', vì đó không phải là toán tử được hỗ trợ.
  3. Cảnh báo nếu sử dụng = thay vì eq hoặc thực hiện các phép gán giá trị
    • Lưu ý rằng '=' và '+=' có chữ màu đỏ thay vì màu đen. Nếu bạn di chuột qua chúng, bạn sẽ thấy cảnh báo rằng bạn đang gán một giá trị.
  4. Sai số lượng đối số cho hàm
    • if() nhận 3 đối số, nhưng nó đã được cho 4, vì vậy việc di chuột trên "if" được đóng hộp màu đỏ sẽ giải thích lỗi và hiển thị cú pháp được hỗ trợ
    • sum() nhận số lượng đối số không giới hạn, nhưng chúng tôi có dấu phẩy ở cuối trước dấu ngoặc đơn đóng, vì vậy nó được đóng hộp màu đỏ
  5. Dấu ngoặc đơn không khớp
    • Đây là một trong những lỗi phổ biến nhất khi viết biểu thức.
    • Điều này cho thấy hai ví dụ về việc thiếu dấu ngoặc đơn đóng và một ví dụ về việc có quá nhiều dấu ngoặc đơn đóng.
#Cú pháp không được hỗ trợ
    • Nếu bạn sử dụng một toán tử hoặc dấu câu mà ES không hỗ trợ, nó sẽ đánh dấu màu đỏ.
  1. Bài tập không hợp lệ
    • Một số biến là readWrite và có thể thay đổi giá trị của chúng. Một số khác ở chế độ chỉ đọc.
    • Nếu bạn cố gắng thay đổi giá trị của biến chỉ đọc, bạn không thể. EM sẽ đánh dấu lần thử vào hộp đỏ.
    • Nếu bạn cố gán một giá trị cho một phương trình hoặc một chuỗi, bạn cũng sẽ gặp lỗi



Ví dụ "trực tiếp" về Đánh dấu cú pháp bằng chú giải công cụ đang hoạt động

Nguồn In đẹp Kết quả
Dưới đây là ví dụ về cú pháp OK với chú giải công cụ
Xin chào {if(gender=='M','Mr.','Mrs.')} {họ}, bây giờ là {date('g:i a',time())}. Bạn có biết con cái và thú cưng {sum(numPets,numKids)} của bạn ở đâu không?
Dưới đây là ví dụ về cú pháp OK với chú giải công cụ
Xin chào nếu họ ( giới tính == ' M' , 'Mr.' , 'Bà' ) thì bây giờ là ngày ( 'g:i a' , thời gian ()) . Bạn có biết tổng số trẻ em và thú cưng của bạn ( numPets , numKids ) ở đâu không?
Dưới đây là ví dụ về cú pháp OK với chú giải công cụ
Xin chào ông Smith , bây giờ là 6:07 sáng. Bạn có biết 3 đứa con và thú cưng của mình ở đâu không?
Dưới đây là các lỗi thường gặp để bạn có thể xem chú giải công cụ
Các biến được sử dụng trước khi chúng được khai báo: {notSetYet}
Chức năng không xác định: {iff(numPets>numKids,1,2)}
Biến không xác định: {sum(age,num_pets,numKids)}
Sai # tham số: {sprintf()},{if(1,2)},{date()}
Chỉ định các biến chỉ đọc:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Dấu ngoặc đơn không cân bằng: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Dưới đây là các lỗi thường gặp để bạn có thể xem chú giải công cụ
Các biến được sử dụng trước khi chúng được khai báo: notSetYet
Chức năng không xác định: iff ( numPets > numKids ,1,2)
Biến không xác định: tổng ( age , num_pets , numKids )
Sai # tham số: sprintf () , if (1,2) , date ()
Chỉ định các biến chỉ đọc: TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally'
Dấu ngoặc đơn không cân bằng: pow (3,4 , ( pow (3,4) , pow (3,4) )
Dưới đây là các lỗi thường gặp để bạn có thể xem chú giải công cụ
Các biến được sử dụng trước khi chúng được khai báo: notSetYet
Chức năng không xác định: iff ( numPets > numKids ,1,2)
Biến không xác định: tổng ( age , num_pets , numKids )
Sai # tham số: sprintf () , if (1,2) , date ()
Chỉ định các biến chỉ đọc: TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally'
Dấu ngoặc đơn không cân bằng: pow (3,4 , ( pow (3,4) , pow (3,4) )
Đây là một số cú pháp không được hỗ trợ
Không hỗ trợ cho '++', '--', '%',';': {min(++age, --age,age % 2);}
Cũng không phải '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Cũng không phải mảng: {name[2], name['mine']}
Đây là một số cú pháp không được hỗ trợ
Không hỗ trợ cho '++', '--', '%',';': min ( ++ age , -- age , age % 2) ;
Cũng không phải '|', '&', '^': ( tổng (2 | 3,3 & 4,5 ^ 6) }
Cũng không phải mảng: tên [ 2 ] , tên [ 'của tôi' ]
Đây là một số cú pháp không được hỗ trợ
Không hỗ trợ cho '++', '--', '%',';': min ( ++ age , -- age , age % 2) ;
Cũng không phải '|', '&', '^': ( tổng (2 | 3,3 & 4,5 ^ 6) }
Cũng không phải mảng: tên [ 2 ] , tên [ 'của tôi' ]


Ví dụ về may đo (ví dụ: mở rộng {INSERTANS:xxx})

"Kính gửi {Mr}/{Mrs} Smith..."

Sử dụng hàm if() để chọn có điều kiện xem có hiển thị 'Mr.' hay không hoặc 'Bà.'.

Cú pháp là if(test,do_if_true,do_if_false).

# Câu hỏi Loại
1 giới tính Giới tính của bạn là gì? Giới tính
|example1 Kính gửi {if(gender=='M','Mr.','Mrs.')} Smith, ... Văn bản dài miễn phí



Như có thể thấy bên dưới, "Ông" và "Bà" được điều chỉnh theo những gì người trả lời chọn làm câu trả lời cho câu hỏi "giới tính".



"Kính gửi {Mr}/{Mrs} Smith..." trong email mời

Bạn có thể sử dụng ví dụ trên trong email mời bằng cách sử dụng các thuộc tính từ bảng mã thông báo. Sử dụng hàm if() để chọn xem 'Mr.' hoặc 'Bà.' nên được sử dụng trong email.


Cú pháp là "if(test,do_if_true,do_if_false)".

# thuộc tính value
1 Họ Smith
2 Địa chỉ email test@test. com
3 ATTRIBUTE_2 M


Nội dung trong email mời:

Kính gửi {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

bạn đã được mời tham gia vào một cuộc khảo sát:

https:/...



email Xem:



Ví dụ về tính toán/đánh giá

Tính toán giá trị đánh giá trong thời gian chạy và lưu trữ kết quả vào dữ liệu khảo sát

Ví dụ này sử dụng tất cả các tính năng của EM, bao gồm loại câu hỏi Mức độ liên quan, Điều chỉnh và Phương trình.

Nó cũng cho thấy rằng tất cả chúng đều hỗ trợ JavaScript, vì vậy nếu bạn có những tính năng này trên một trang, nó sẽ tự động thay đổi khi mọi người đặt và thay đổi câu trả lời của họ.

# Câu hỏi Loại Mức độ liên quan
1 numKids Bạn có bao nhiêu đứa con? Đầu vào số - 2 kid1 Con đầu lòng của bạn bao nhiêu tuổi? Nhập số numKids >= 1
3 kid2 Con thứ hai của bạn bao nhiêu tuổi? child? Đầu vào số numKids >= 2
4 kid3 Con thứ ba của bạn bao nhiêu tuổi? Đầu vào số numKids >= 3
6 sumKidAges {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} Equation 1
7 kidSummary Bạn nói rằng bạn có {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','Tổng số tuổi của những đứa trẻ ',min(numKids,4),' đầu tiên của bạn là ',sumKidAges,'.'),' ')} |1


Để tải xuống ví dụ này, vui lòng nhấp vào liên kết sau: Assessments_survey_example.


Bạn có thể tìm thấy ảnh chụp màn hình bên dưới của các câu hỏi đại diện. Như bạn có thể thấy, cú pháp EM làm nổi bật tất cả các trường có thể chứa thông tin chỉnh sửa. Tại đây, bạn sẽ thấy các ví dụ về mức độ liên quan làm nổi bật cú pháp, loại câu hỏi Phương trình và các thay thế trong một câu hỏi. Bạn cũng có thể sử dụng các thay thế trong Trợ giúp, Hiển thị tiêu đề nhóm, Thông báo chào mừng và Thông báo kết thúc.

Trong ví dụ tiếp theo, vì mức độ liên quan là {numKids >= 2), nên câu hỏi sẽ chỉ hiển thị nếu người trả lời cho biết cô ấy có ít nhất hai con.



Dưới đây, bạn có thể quan sát thấy mỗi biến đều có hậu tố .NAOK được đính kèm. Điều này là do cách EM hỗ trợ mức độ liên quan theo tầng. Nếu bạn không có .NAOK thì tổng sẽ chỉ được tính nếu người đó nói rằng cô ấy có 4 người con (ví dụ: nếu tất cả các biến đều có liên quan). Việc sử dụng .NAOK có nghĩa là chúng tôi muốn tính tổng ngay cả khi tất cả hoặc một số biến không liên quan (ví dụ: "Không áp dụng" (NA) vẫn ổn (OK)).

Tuy nhiên, thuộc tính .NAOK chỉ ảnh hưởng đến việc các biến có được truyền vào EM hay không. Nếu người trả lời ban đầu nói rằng cô ấy có 3 đứa con và nhập tuổi cho mỗi đứa con, sau đó đổi ý và nói rằng cô ấy có 2 đứa con, thì chúng tôi không muốn xem tổng của 3 giá trị đã nhập - vì đứa con thứ ba "không áp dụng được" trong trường hợp của chúng tôi nữa:



Mỗi Biểu thức riêng biệt được mã hóa bằng màu với nền màu nâu. Như bạn có thể thấy, có ba Biểu thức riêng biệt ở đây. Cái cuối cùng chứa một thông báo chỉ được hiển thị có điều kiện nếu người đó có nhiều hơn một đứa con.



Bây giờ, đây là ảnh chụp màn hình của cuộc khảo sát đang diễn ra.

Khi bạn truy cập trang lần đầu tiên, bạn sẽ thấy điều này. Lưu ý rằng "Bạn có 0 con" thay vì "Bạn có 0 con".



Nếu tôi thay đổi giá trị của số lượng trẻ em thành 1, màn hình sẽ ngay lập tức thay đổi thành giá trị này, ngay cả khi nó ở trên cùng một trang:



Bây giờ chú ý rằng ngữ pháp đã đúng: "Bạn có 1 con".

Bây giờ tôi thay đổi giá trị của số trẻ em thành 3 và màn hình ngay lập tức thay đổi thành giá trị này.

Lưu ý rằng bây giờ bạn thấy thông báo có điều kiện ở phía dưới: "Tổng số tuổi của 3 đứa con đầu lòng của bạn là 0".



Bây giờ tôi sẽ nhập độ tuổi cho những đứa trẻ tưởng tượng của mình và tôi nhận được màn hình này, tổng hợp độ tuổi của chúng:



Một lần nữa, điểm số và màn hình hiển thị cập nhật ngay lập tức khi tôi nhập các giá trị, vì vậy bạn có thể sử dụng điểm này để hiển thị tổng điểm Đánh giá hiện tại.


Bây giờ, tôi thay đổi giá trị của số lượng trẻ em thành 2. Màn hình đã thay đổi như sau:



Lưu ý rằng mặc dù tôi đã nhập giá trị 5,5 cho đứa con thứ ba nhưng báo cáo hiện chỉ tính tổng giá trị của 2 đứa con đầu tiên của tôi.

Lý do cho điều này là giá trị thứ 3 hiện không còn phù hợp và các giá trị không liên quan sẽ bị EM chủ động bỏ qua.

Nếu tôi thay đổi số lượng trẻ em về 3, tôi sẽ thấy giá trị 5,5 mà tôi đã nhập lại. Vì vậy, tôi không bị mất bất kỳ thông tin nào tôi nhập trên trang.

Tuy nhiên, nếu tôi điều hướng đến trang Tiếp theo hoặc Trước đó, tất cả các giá trị không liên quan sẽ bị loại bỏ trong phiên và trong cơ sở dữ liệu. Vì vậy, nếu tôi giữ giá trị ở mức 2, hãy chuyển sang trang tiếp theo, sau đó quay lại và nói rằng tôi thực sự có 3 đứa con, tôi sẽ không còn thấy số 5,5 nữa.


Nhập dữ liệu và xem báo cáo thay đổi linh hoạt về nội dung đã nhập trên cùng một trang

Ví dụ này trình bày quy trình May đo trong LimeSurvey.

Để tải xuống ví dụ này, hãy nhấp vào liên kết sau: Ví dụ khảo sát về thay đổi động.

Đây là giao diện ban đầu của trang. Bạn chỉ thấy câu hỏi hỏi bạn sống ở thành phố nào:



Khi bạn bắt đầu nhập câu trả lời, quá trình điều chỉnh cũng bắt đầu:

Tập tin:em-on_page_report-usage-2.jpg


Khi bạn nhập câu trả lời, bảng ở cuối trang sẽ được cập nhật để hiển thị mã câu trả lời và giá trị câu trả lời của bạn.


Tập tin:em-on_page_report-usage-3.jpg

Các ví dụ gỡ lỗi phổ biến

Câu lệnh if() lồng nhau (Logic có điều kiện)

EM hỗ trợ chức năng "if(test,do_if_true,do_if_false)" để bạn có thể thực hiện logic điều kiện hoặc điều chỉnh. Hàm này có thể được lồng vào nhau để thực hiện tương đương với "if { } else if { } else { }". EM sẽ cho bạn biết nếu dấu ngoặc đơn không cân bằng (ví dụ: bạn thiếu dấu ngoặc đơn đóng bên phải) hoặc nếu bạn có thêm bất kỳ dấu ngoặc đơn bên phải nào. Bạn nên cố gắng đếm các dấu ngoặc đơn khi soạn các câu lệnh if lồng nhau dài, lưu nó, kiểm tra lỗi cú pháp và sửa chúng nếu tìm thấy. Chúng ta hãy cùng nhau kiểm tra ví dụ dưới đây.

Bạn có thể truy cập nhóm câu hỏi được sử dụng bên dưới từ đây: Mayoring Survey example.lsg


Đầu tiên, không cần nhập gì, bạn chỉ thấy "Xin chào".



Nếu bạn nhập tên, nó sẽ hiển thị "Xin chào {name}."



Nếu bạn nhập độ tuổi, bạn sẽ nhận được thông báo phù hợp, tùy thuộc vào việc bạn có phải là trẻ ở độ tuổi mẫu giáo hay không:



Ở độ tuổi đi học, thiếu niên hoặc người lớn. Đây là một thiếu niên muốn giấu tên:



Đây là tập tin logic của nhóm. Như bạn có thể thấy trong câu hỏi "if-based", có các câu lệnh if lồng nhau dựa trên tuổi của người đó.


Tập tin:em-nested-if-logic-file.jpg


Khi bạn chỉnh sửa câu hỏi này ban đầu, rất có thể tại một thời điểm nào đó, bạn sẽ sử dụng sai số dấu ngoặc đơn. Đây là những gì sẽ xảy ra nếu bạn có quá ít:



Nếu bạn di chuột qua từ "if" được bao quanh bởi hộp màu đỏ, nó sẽ báo "Dấu ngoặc đơn không cân bằng". Trong trường hợp này, cần có bốn dấu ngoặc đơn đóng sau "đã là người lớn!", nhưng chỉ có ba dấu ngoặc đơn.

Mặt khác, nếu bạn có thêm dấu ngoặc đơn bên phải, nó sẽ được bao quanh bởi một hộp màu đỏ, như thế này:



Khi bạn thực sự chỉnh sửa câu hỏi, câu hỏi sẽ trông như thế này: