Ðо Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑзÑÐºÐ°Ñ Ð¿ÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð´ должен имеÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ Ð¿ÑинимаÑÑ ÑеÑÐµÐ½Ð¸Ñ Ð½Ð° оÑнове введÑннÑÑ Ð¿Ð¾Ð»ÑзоваÑелем даннÑÑ . ÐапÑимеÑ, в игÑе, еÑли Ñ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ Ð¾ÑÑалоÑÑ 0 жизней, Ñо игÑа завеÑÑаеÑÑÑ. РпÑиложении о погоде ÑÑÑом оÑобÑажаеÑÑÑ Ð²Ð¾ÑÑ Ð¾Ð´ ÑолнÑа, а веÑеÑом Ð·Ð²ÐµÐ·Ð´Ñ Ð¸ лÑна. Ð ÑÑой ÑÑаÑÑе Ð¼Ñ ÑаÑÑмоÑÑим как в JavaScript ÑабоÑаÑÑ Ñак назÑваемÑе "ÑÑловиÑ".
ÐÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ðµ ÑÑловие: ÐÐ°Ð·Ð¾Ð²Ð°Ñ ÐºÐ¾Ð¼Ð¿ÑÑÑеÑÐ½Ð°Ñ Ð³ÑамоÑноÑÑÑ, базовое понимание HTML и CSS, JavaScript first steps. ЦелÑ: ÐонÑÑÑ Ð¿ÑинÑÐ¸Ð¿Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð¿ÐµÑаÑоÑов ÑÑловий в JavaScript. ÐÑÐ±Ð¾Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑÑловиÑ!ÐÑди (и живоÑнÑе) пÑинимаÑÑ ÐºÐ°ÐºÐ¸Ðµ-либо ÑеÑÐµÐ½Ð¸Ñ Ð²ÑÑ Ð¶Ð¸Ð·Ð½Ñ, Ð¾Ñ Ð¼Ð°Ð»Ð¾Ð·Ð½Ð°ÑимÑÑ ("ÑÑÐ¾Ð¸Ñ Ð»Ð¸ мне ÑÑеÑÑÑ Ð¾Ð´Ð½Ñ Ð¿ÐµÑенÑÐºÑ Ð¸Ð»Ð¸ две?") до жизнеопÑеделÑÑÑÐ¸Ñ ("ÑÑÐ¾Ð¸Ñ Ð»Ð¸ мне оÑÑаÑÑÑÑ Ð´Ð¾Ð¼Ð° и ÑабоÑаÑÑ Ð½Ð° ÑеÑме оÑÑа или пеÑÐµÐµÑ Ð°ÑÑ Ð² дÑÑгÑÑ ÑÑÑÐ°Ð½Ñ Ð¸ изÑÑаÑÑ Ð°ÑÑÑоÑизикÑ?")
ÐпеÑаÑоÑÑ ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð² JavaScript позволÑÑÑ Ð½Ð°Ð¼ ÑказаÑÑ Ñазного Ñода дейÑÑÐ²Ð¸Ñ Ð² завиÑимоÑÑи Ð¾Ñ Ð²ÑбÑанного полÑзоваÑелем или ÑиÑÑемой оÑвеÑа (напÑÐ¸Ð¼ÐµÑ Ð¾Ð´Ð½Ð° пеÑенÑка или две) и ÑвÑзаÑÑ ÐµÐ³Ð¾ Ñ Ð´ÐµÐ¹ÑÑвием (ÑезÑлÑÑаÑом), напÑимеÑ, ÑезÑлÑÑаÑом "ÑÑеÑÑÑ Ð¾Ð´Ð½Ñ Ð¿ÐµÑенÑкÑ" бÑÐ´ÐµÑ "вÑе еÑÑ Ð±ÑÐ´Ñ ÑÑвÑÑвоваÑÑ ÑÐµÐ±Ñ Ð³Ð¾Ð»Ð¾Ð´Ð½Ñм", а ÑезÑлÑÑаÑом "ÑÑеÑÑÑ Ð´Ð²Ðµ пеÑенÑки" бÑÐ´ÐµÑ "бÑÐ´Ñ ÑÑвÑÑвоваÑÑ ÑÐµÐ±Ñ ÑÑÑÑм, но мама Ð¼ÐµÐ½Ñ Ð¿Ð¾ÑÑÐ³Ð°ÐµÑ Ð·Ð° Ñо, ÑÑо Ñ ÑÑел вÑе ÑладоÑÑи".
ÐпеÑаÑÐ¾Ñ if ... elseÐавайÑе глÑнем на наиболее ÑаÑпÑоÑÑÑанÑннÑй Ñип ÑÑловного опеÑаÑоÑа, коÑоÑÑй Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ Ð² JavaScript â if ... else
опеÑаÑоÑ.
ÐазовÑй if...else
ÑинÑакÑÐ¸Ñ Ð²ÑглÑÐ´Ð¸Ñ ÐºÐ°Ðº pseudocode:
if (condition) { code to run if condition is true } else { run some other code instead }
ЧÑо Ð¼Ñ Ð¸Ð¼ÐµÐµÐ¼:
if
ÑаÑположено пеÑед кÑÑглÑми Ñкобками.true
или false
.true)
.else (инаÑе)
.true)
.ÐÑÐ¾Ñ ÐºÐ¾Ð´ доволÑно ÑиÑабелен â он говоÑÐ¸Ñ "if (еÑли) condition (ÑÑловие) возвÑаÑÐ°ÐµÑ true (иÑÑина)
, запÑÑÑи код A, else (инаÑе) запÑÑÑи B"
СÑÐ¾Ð¸Ñ Ð·Ð°Ð¼ÐµÑиÑÑ, ÑÑо else
и вÑоÑой блок Ñкобок { } не обÑзаÑелен â ÑледÑÑÑий код Ñак же бÑÐ´ÐµÑ ÑабоÑаÑÑ:
if (condition) { код, коÑоÑÑй должен вÑполниÑÑ, еÑли ÑÑловие иÑÑина } какой-Ñо дÑÑгой код
Тем не менее, ÑледÑÐµÑ Ð±ÑÑÑ Ð¾ÑÑоÑожнÑм â в ÑлÑÑае, еÑли код внÑÑÑи вÑоÑÑÑ Ñкобок { } не конÑÑолиÑÑеÑÑÑ ÑÑловием, Ñо ÑÑÐ¾Ñ ÐºÐ¾Ð´ бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð²Ñегда. ÐÑо не Ð¿Ð»Ð¾Ñ Ð¾, пÑоÑÑо Ð²Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿Ð¾Ð¼Ð½Ð¸ÑÑ Ð¾Ð± ÑÑом, ÑаÑе Ð²Ñ Ñ Ð¾ÑиÑе запÑÑÑиÑÑ Ð¾Ð´Ð¸Ð½ кÑÑок кода или дÑÑгой, но не оба.
Ð, наконеÑ, иногда Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе вÑÑÑеÑиÑÑ ÐºÐ¾Ð´ if...else
без ÑигÑÑнÑÑ
Ñкобок в ÑокÑаÑÑнной ÑоÑме:
if (condition) code to run if condition is true else run some other code instead
ÐÑо абÑолÑÑно ÑабоÑий код, но он менее ÑиÑаем, лÑÑÑе иÑполÑзоваÑÑ ÑигÑÑнÑе Ñкобки, новÑе ÑÑÑоки и оÑÑÑÑпÑ.
РеалÑнÑй пÑимеÑЧÑÐ¾Ð±Ñ Ð»ÑÑÑе понÑÑÑ ÑинÑакÑиÑ, давайÑе ÑаÑÑмоÑÑим ÑеалÑнÑй пÑимеÑ. ÐÑедÑÑавÑÑе, ÑÑо маÑÑ Ð¸Ð»Ð¸ оÑÐµÑ Ð¿Ð¾Ð¿ÑоÑили помоÑÑ Ñ ÑабоÑой по Ð´Ð¾Ð¼Ñ Ñвоего ÑебÑнка. РодиÑÐµÐ»Ñ Ð¼Ð¾Ð¶ÐµÑ ÑказаÑÑ: "ÐÑли ÑÑ Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑÑ Ð¼Ð½Ðµ Ñ Ð¿Ð¾ÐºÑпками, Ñо Ñ Ð´Ð°Ð¼ Ñебе дополниÑелÑнÑе денÑги на каÑманнÑе ÑаÑÑ Ð¾Ð´Ñ, коÑоÑÑе ÑÑ ÑможеÑÑ Ð¿Ð¾ÑÑаÑиÑÑ Ð½Ð° игÑÑÑкÑ, какÑÑ Ð·Ð°Ñ Ð¾ÑеÑÑ". Ð JavaScript, Ð¼Ñ Ð¼Ð¾Ð¶ÐµÐ¼ пÑедÑÑавиÑÑ ÑÑо Ñак:
var shoppingDone = false;
if (shoppingDone === true) {
var childsAllowance = 10;
} else {
var childsAllowance = 5;
}
Ð ÑÑом коде, как показано, вÑегда бÑÐ´ÐµÑ shoppingDone
ÑавнÑй false
, ÑÑо ознаÑÐ°ÐµÑ ÑазоÑаÑование Ð´Ð»Ñ Ð½Ð°Ñего бедного ÑебÑнка. ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð¿ÑедоÑÑавиÑÑ Ð¼ÐµÑ
анизм Ð´Ð»Ñ ÑодиÑелÑ, ÑÑÐ¾Ð±Ñ ÑÑÑановиÑÑ Ð´Ð»Ñ Ð¿ÐµÑеменной shoppingDone
знаÑение true
, еÑли ÑебÑнок помог Ñ Ð¿Ð¾ÐºÑпками.
ÐÑимеÑание: ÐÑ Ð¼Ð¾Ð¶ÐµÑе ÑвидеÑÑ Ð±Ð¾Ð»ÑÑе в полной веÑÑии ÑÑого пÑимеÑа на GitHub (Ñакже поÑмоÑÑеÑÑ ÐºÐ°Ðº он ÑабоÑÐ°ÐµÑ Ð²Ð¶Ð¸Ð²ÑÑ.)
else ifРпÑедÑдÑÑем пÑимеÑе пÑедоÑÑавлено два вÑбоÑа, или ÑезÑлÑÑаÑа â но ÑÑо, еÑли Ð¼Ñ Ñ Ð¾Ñим болÑÑе, Ñем два?
СÑÑеÑÑвÑÐµÑ ÑпоÑоб пÑивÑзаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе ваÑианÑÑ/ÑезÑлÑÑаÑÑ Ðº ваÑÐµÐ¼Ñ if...else
â иÑполÑзоваÑÑ else if
. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ дополниÑелÑного вÑбоÑа ÑÑебÑеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑй блок, коÑоÑÑй нÑжно ÑаÑположиÑÑ Ð¼ÐµÐ¶Ð´Ñ if() { ... }
и else { ... }
â пÑовеÑÑÑе ÑледÑÑÑий более ÑложнÑй пÑимеÑ, коÑоÑÑй Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑаÑÑÑÑ Ð¿ÑоÑÑого пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñогноза погодÑ:
<label for="weather">ÐÑбеÑиÑе Ñип Ð¿Ð¾Ð³Ð¾Ð´Ñ ÑегоднÑ: </label>
<select id="weather">
<option value="">--СделайÑе вÑбоÑ--</option>
<option value="sunny">СолнеÑно</option>
<option value="rainy">Ðождливо</option>
<option value="snowing">Снежно</option>
<option value="overcast">ÐблаÑно</option>
</select>
<p></p>
var select = document.querySelector("select");
var para = document.querySelector("p");
select.addEventListener("change", setWeather);
function setWeather() {
var choice = select.value;
if (choice === "sunny") {
para.textContent =
"Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ñ
оÑоÑо и ÑолнеÑно. ÐоÑиÑе ÑоÑÑÑ! ÐдиÑе на плÑж, или в паÑк, и кÑпиÑе моÑоженое.";
} else if (choice === "rainy") {
para.textContent =
"ÐÐ¾Ð¶Ð´Ñ Ð¿Ð°Ð´Ð°ÐµÑ Ð·Ð° окном; возÑмиÑе Ð¿Ð»Ð°Ñ Ð¸ зонÑ, и не наÑ
одиÑеÑÑ ÑлиÑком долго на ÑлиÑе.";
} else if (choice === "snowing") {
para.textContent =
"Снег Ð¿Ð°Ð´Ð°ÐµÑ - моÑозно! ÐÑÑÑе вÑего поÑидеÑÑ Ñ ÑаÑкой гоÑÑÑего Ñоколада или ÑлепиÑÑ Ñнеговика.";
} else if (choice === "overcast") {
para.textContent =
"ÐÐ¾Ð¶Ð´Ñ Ð½ÐµÑ, но небо ÑеÑое и мÑаÑное; он вÑе Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð² лÑбÑÑ Ð¼Ð¸Ð½ÑÑÑ, поÑÑÐ¾Ð¼Ñ Ð½Ð° вÑÑкий ÑлÑÑай возÑмиÑе дождевик.";
} else {
para.textContent = "";
}
}
<select>
коÑоÑÑй позволÑÐµÑ Ð½Ð°Ð¼ вÑбиÑаÑÑ ÑазнÑе ваÑианÑÑ Ð¿Ð¾Ð³Ð¾Ð´Ñ Ð¸ пÑоÑÑой абзаÑ.<select>
и <p>
и добавлÑем обÑабоÑÑик ÑобÑÑÐ¸Ñ ÑлеменÑа <select>
, ÑÑÐ¾Ð±Ñ Ð¿Ñи его изменении знаÑÐµÐ½Ð¸Ñ Ð·Ð°Ð¿ÑÑкалаÑÑ ÑÑнкÑÐ¸Ñ setWeather()
.choice
, коÑоÑÐ°Ñ Ñавна вÑбÑÐ°Ð½Ð½Ð¾Ð¼Ñ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð² ÑлеменÑе <select>
. ÐаÑем Ð¼Ñ Ð¸ÑполÑзÑем ÑÑловнÑй опеÑаÑÐ¾Ñ Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ ÑекÑÑа внÑÑÑи абзаÑа в завиÑимоÑÑи Ð¾Ñ Ñого, какое знаÑение Ñ Ð¿ÐµÑеменной choice
. ÐбÑаÑиÑе внимание, как вÑе ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð¿ÑовеÑÑÑÑÑÑ Ð² else if() {...}
блокаÑ
, за иÑклÑÑением пеÑвого, коÑоÑÑй иÑполÑзÑÐµÑ if() {...}
блок.else {...}
блока, в оÑновном ÑвлÑеÑÑÑ Â«Ð¿Ð¾Ñледним ÑÑедÑÑвом» â код внÑÑÑи него бÑÐ´ÐµÑ Ð·Ð°Ð¿ÑÑен, еÑли ни одно из ÑÑловий не бÑÐ´ÐµÑ true
. Ð ÑÑом ÑлÑÑае он ÑлÑÐ¶Ð¸Ñ Ð´Ð»Ñ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÑекÑÑа из абзаÑа, еÑли ниÑего не вÑбÑано, напÑимеÑ, еÑли полÑзоваÑÐµÐ»Ñ ÑеÑÐ°ÐµÑ Ð¿Ð¾Ð²ÑоÑно вÑбÑаÑÑ Ð¾Ð¿ÑÐ¸Ñ "--СделайÑе вÑбоÑ--" коÑоÑÐ°Ñ Ñказана в наÑале.ÐÑимеÑание: ÐÑ Ð¼Ð¾Ð¶ÐµÑе найÑи ÑÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð½Ð° GitHub (Ñакже ÑвидеÑÑ ÐºÐ°Ðº он ÑабоÑаеÑ)
ÐÑимеÑание об опеÑаÑоÑÐ°Ñ ÑÑавнениÑÐпеÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð¸ÑполÑзÑÑÑ Ð´Ð»Ñ Ð¿ÑовеÑки ÑÑловий внÑÑÑи наÑÐ¸Ñ ÑÑловнÑÑ Ð¾Ð¿ÐµÑаÑоÑов. СнаÑала Ð¼Ñ Ð¿Ð¾ÑмоÑÑели на опеÑаÑоÑÑ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð² наÑей ÑÑаÑÑе ÐÐ°Ð·Ð¾Ð²Ð°Ñ Ð¼Ð°ÑемаÑика в JavaScript â ÑиÑÑÑ Ð¸ опеÑаÑоÑÑ . ÐÐ°Ñ Ð²ÑÐ±Ð¾Ñ ÑÑо:
===
и !==
â пÑовеÑÑÐµÑ Ð¾Ð´Ð½Ð¾ знаÑение иденÑиÑно или не иденÑиÑно дÑÑгомÑ.<
и >
â пÑовеÑÑÐµÑ Ð¾Ð´Ð½Ð¾ знаÑение менÑÑе или болÑÑе, Ñем дÑÑгое.<=
и >=
â пÑовеÑÑÐµÑ Ð¾Ð´Ð½Ð¾ знаÑение менÑÑе или Ñавно, либо болÑÑе или Ñавно дÑÑгомÑ.ÐÑимеÑание: ÐÑоÑмоÑÑиÑе маÑеÑиал по пÑедÑдÑÑей ÑÑÑлке, еÑли Ð²Ñ Ñ Ð¾ÑиÑе оÑвежиÑÑ ÑÐ²Ð¾Ñ Ð¿Ð°Ð¼ÑÑÑ.
ÐÑ Ñ
оÑели Ð±Ñ Ð¾Ñобо обÑаÑиÑÑ Ð²Ð½Ð¸Ð¼Ð°Ð½Ð¸Ðµ на пÑовеÑÐºÑ Ð±ÑлевÑÑ
знаÑений (true
/false
), и обÑий Ñаблон, коÑоÑÑй Ð²Ñ Ð±ÑдеÑе вÑÑÑеÑаÑÑ Ñнова и Ñнова. ÐÑбое знаÑение, коÑоÑое не еÑÑÑ false
, undefined
, null
, 0
, NaN
, или пÑÑÑÐ°Ñ ÑÑÑока (''
) ÑакÑиÑеÑки возвÑаÑÐ°ÐµÑ true
пÑи ÑеÑÑиÑовании как ÑÑловного опеÑаÑоÑа. ÐоÑÑÐ¾Ð¼Ñ Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе пÑоÑÑо иÑполÑзоваÑÑ Ð¸Ð¼Ñ ÑобÑÑвенной пеÑеменной, ÑÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ, Ñавна ли она true
, или ÑÑÑеÑÑвÑÐµÑ (Ñ. е. пеÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ Ñавна undefined). ÐапÑимеÑ:
var cheese = "Cheddar";
if (cheese) {
console.log("УÑа! ÐÑÑÑ ÑÑÑ Ð´Ð»Ñ Ð¿ÑигоÑÐ¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑÑеÑбÑода.");
} else {
console.log("Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ð½ÐµÑ ÑÑÑа Ð´Ð»Ñ Ð±ÑÑеÑбÑода.");
}
Ð, возвÑаÑаÑÑÑ Ðº наÑÐµÐ¼Ñ Ð¿ÑедÑдÑÑÐµÐ¼Ñ Ð¿ÑимеÑÑ Ð¾ ÑебÑнке, вÑполнÑÑÑем поÑÑÑение Ñвоего ÑодиÑелÑ, Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе ÑÑо запиÑаÑÑ Ñак:
var shoppingDone = false;
if (shoppingDone) {
// не нÑжно Ñвно ÑказÑваÑÑ '=== true'
var childsAllowance = 10;
} else {
var childsAllowance = 5;
}
ÐложенноÑÑÑ if ... else
Ðполне ноÑмалÑно иÑполÑзоваÑÑ Ð¾Ð´Ð¸Ð½ ÑÑловнÑй опеÑаÑÐ¾Ñ if...else
внÑÑÑи дÑÑгого â вложиÑÑ Ð¸Ñ
. ÐапÑимеÑ, Ð¼Ñ Ð¼Ð¾Ð³Ð»Ð¸ Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ Ð½Ð°Ñе пÑиложение пÑогноза погодÑ, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ Ð½Ð°Ð±Ð¾Ñ Ð²Ð°ÑианÑов в завиÑимоÑÑи Ð¾Ñ ÑемпеÑаÑÑÑÑ:
if (choice === "sunny") {
if (temperature < 86) {
para.textContent =
"СейÑÐ°Ñ " +
temperature +
" гÑадÑÑов по ÑаÑенгейÑÑ â Ñ
оÑоÑо и ÑолнеÑно. ÐдиÑе на плÑж, или в паÑк, и кÑпиÑе моÑоженое.";
} else if (temperature >= 86) {
para.textContent =
"СейÑÐ°Ñ " +
temperature +
" гÑадÑÑов по ÑаÑенгейÑÑ â ÐаÑа! ÐÑли Ð²Ñ Ñ
оÑиÑе вÑйÑи на ÑлиÑÑ, обÑзаÑелÑно иÑполÑзÑйÑе ÑолнÑезаÑиÑнÑй кÑем.";
}
}
ÐеÑмоÑÑÑ Ð½Ð° Ñо, ÑÑо веÑÑ ÐºÐ¾Ð´ ÑабоÑÐ°ÐµÑ Ð²Ð¼ÐµÑÑе, каждÑй ÑÑловнÑй опеÑаÑÐ¾Ñ if...else
ÑабоÑÐ°ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð¾ÑделÑно Ð¾Ñ Ð´ÑÑгого.
ÐÑли Ð²Ñ Ñ
оÑиÑе пÑовеÑиÑÑ Ð½ÐµÑколÑко ÑÑловий без запиÑи вложеннÑÑ
if...else
ÑÑловий, логиÑеÑкие опеÑаÑоÑÑ Ð¿Ð¾Ð¼Ð¾Ð³ÑÑ Ð²Ð°Ð¼. ÐÑи иÑполÑзовании в ÑÑловиÑÑ
, пеÑвÑе два опеÑаÑоÑа делаÑÑ ÑледÑÑÑее:
&&
â Ð; позволÑÐµÑ Ð¾Ð±ÑединиÑÑ Ð´Ð²Ð° или более вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñак, ÑÑо каждое из ниÑ
оÑделÑно должно имеÑÑ Ð·Ð½Ð°Ñение true
, ÑÑÐ¾Ð±Ñ Ð² иÑоге обÑее вÑÑажение имело знаÑение true
.||
â ÐÐÐ; позволÑÐµÑ Ð¾Ð±ÑединиÑÑ Ð´Ð²Ð° или более вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ñак, ÑÑо одно или неÑколÑко из ниÑ
должно имеÑÑ Ð·Ð½Ð°Ñение true
, ÑÑÐ¾Ð±Ñ Ð² иÑоге обÑее вÑÑажение имело знаÑение true
.ЧÑÐ¾Ð±Ñ Ð´Ð°ÑÑ Ð²Ð°Ð¼ пÑÐ¸Ð¼ÐµÑ Ð¾Ð¿ÐµÑаÑоÑа Ð, пÑедÑдÑÑий ÑÑÐ°Ð³Ð¼ÐµÐ½Ñ ÐºÐ¾Ð´Ð° можно пеÑепиÑаÑÑ Ñак:
if (choice === "sunny" && temperature < 86) {
para.textContent =
"СейÑÐ°Ñ " +
temperature +
" гÑадÑÑов по ÑаÑенгейÑÑ â Ñ
оÑоÑо и ÑолнеÑно. ÐдиÑе на плÑж, или в паÑк, и кÑпиÑе моÑоженое.";
} else if (choice === "sunny" && temperature >= 86) {
para.textContent =
"СейÑÐ°Ñ " +
temperature +
" гÑадÑÑов по ÑаÑенгейÑÑ â ÐаÑа! ÐÑли Ð²Ñ Ñ
оÑиÑе вÑйÑи на ÑлиÑÑ, обÑзаÑелÑно иÑполÑзÑйÑе ÑолнÑезаÑиÑнÑй кÑем.";
}
Так, Ð´Ð»Ñ Ð¿ÑимеÑа, пеÑвÑй блок кода вÑполниÑÑÑ ÑолÑко в Ñом ÑлÑÑае, еÑли choice === 'sunny'
иtemperature < 86
веÑнÑÑ Ð·Ð½Ð°Ñение true
.
ÐавайÑе поÑмоÑÑим на бÑÑÑÑÑй пÑÐ¸Ð¼ÐµÑ Ð¾Ð¿ÐµÑаÑоÑа ÐÐÐ:
if (iceCreamVanOutside || houseStatus === "в огне") {
//еÑли подÑеÑ
ал ÑÑÑгон Ñ Ð¼Ð¾ÑоженÑм или дом гоÑиÑ
console.log("ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑÑо покинÑÑÑ Ð´Ð¾Ð¼.");
} else {
console.log("ÐеÑоÑÑно, можно в нем оÑÑаваÑÑÑÑ.");
}
ÐоÑледний Ñип логиÑеÑкого опеÑаÑоÑа ÐÐ, вÑÑаженнÑй !
опеÑаÑоÑом, можно иÑполÑзоваÑÑ Ð´Ð»Ñ Ð¾ÑÑиÑÐ°Ð½Ð¸Ñ Ð²ÑÑажениÑ. ÐавайÑе обÑединим его Ñ ÐÐРв пÑиведÑнном вÑÑе пÑимеÑе:
if (!(iceCreamVanOutside || houseStatus === "on fire")) {
console.log("ÐеÑоÑÑно, можно в нем оÑÑаваÑÑÑÑ.");
} else {
console.log("ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑÑо покинÑÑÑ Ð´Ð¾Ð¼.");
}
Ð ÑÑом ÑÑагменÑе, еÑли ÑÑловие ÐÐРвозвÑаÑÐ°ÐµÑ true
, опеÑаÑÐ¾Ñ ÐРбÑÐ´ÐµÑ Ð¾ÑÑиÑаÑÑ ÑÑо и вÑÑажение веÑнÑÑ false
.
Ðожно ÑоÑеÑаÑÑ Ð»Ñбое колиÑеÑÑво логиÑеÑÐºÐ¸Ñ Ð¾Ð¿ÐµÑаÑоÑов, в лÑбой поÑледоваÑелÑноÑÑи и в лÑбой комбинаÑии. Ð ÑледÑÑÑем пÑимеÑе код в блоке бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ ÑолÑко в Ñом ÑлÑÑае, еÑли оба ÑÑÐ»Ð¾Ð²Ð¸Ñ Ñ ÐÐРвозвÑаÑаÑÑ true, а ÑледоваÑелÑно, и опеÑаÑÐ¾Ñ Ð Ð²Ð¾Ð·Ð²ÑаÑÐ°ÐµÑ true:
if ((x === 5 || y > 3 || z <= 10) && (loggedIn || userName === "Steve")) {
// код вÑполнÑеÑÑÑ
}
РаÑпÑоÑÑÑанÑнной оÑибкой пÑи иÑполÑзовании логиÑеÑкого опеÑаÑоÑа ÐÐРв ÑÑловном вÑÑажении ÑвлÑеÑÑÑ Ñказание пеÑеменной, знаÑение коÑоÑой нÑжно пÑовеÑиÑÑ Ñо ÑпиÑком возможнÑÑ
знаÑений ÑÑой пеÑеменной, ÑазделÑннÑÑ
опеÑаÑоÑами ||
(ÐÐÐ). ÐапÑимеÑ.
if (x === 5 || 7 || 10 || 20) {
// вÑполниÑÑ ÐºÐ¾Ð´
}
Рданном пÑимеÑе ÑÑловие в if(...)
вÑегда бÑÐ´ÐµÑ Ð¾ÑениваÑÑÑÑ ÐºÐ°Ðº true, поÑколÑÐºÑ 7 (или лÑбое дÑÑгое ненÑлевое знаÑение) вÑегда бÑÐ´ÐµÑ Ð¾ÑениваÑÑÑÑ ÐºÐ°Ðº true. ФакÑиÑеÑки, ÑÑо ÑÑловие глаÑÐ¸Ñ Â«ÐµÑли Ñ
Ñавен 5, или 7 ÑвлÑеÑÑÑ true». Ðо нам ÑÑебÑеÑÑÑ ÑовÑем не ÑÑо. ЧÑÐ¾Ð±Ñ Ð´Ð¾ÑÑиÑÑ Ð½Ñжной Ñели, пÑидÑÑÑÑ Ð²ÑполнÑÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑеннÑÑ Ð¿ÑовеÑÐºÑ Ð¿Ð¾Ñле каждого опеÑаÑоÑа ÐÐÐ:
if (x === 5 || x === 7 || x === 10 || x === 20) {
// вÑполниÑÑ ÐºÐ¾Ð´
}
ÐпеÑаÑÐ¾Ñ switch
ÐÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ if...else
оÑлиÑно ÑпÑавлÑÑÑÑÑ Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸ÐµÐ¼ ÑÑловного кода, однако они не лиÑÐµÐ½Ñ Ð½ÐµÐ´Ð¾ÑÑаÑков. Ðни Ñ
оÑоÑо подÑ
одÑÑ Ð´Ð»Ñ ÑиÑÑаÑии, когда имееÑÑÑ Ð²Ñего паÑа ваÑианÑов ÑазвиÑÐ¸Ñ ÑобÑÑий, каждÑй из коÑоÑÑÑ
Ð¸Ð¼ÐµÐµÑ Ð±Ð»Ð¾Ðº Ñ Ð¿ÑиемлемÑм колиÑеÑÑвом кода, а Ñакже в ÑлÑÑаÑÑ
, когда ÑÑловие ÑвлÑеÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно ÑложнÑм и вклÑÑÐ°ÐµÑ Ð½ÐµÑколÑко логиÑеÑкиÑ
опеÑаÑоÑов. ÐÑли же нам ÑÑебÑеÑÑÑ Ð²Ñего лиÑÑ Ð·Ð°Ð´Ð°ÑÑ Ð¿ÐµÑеменнÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑеделÑнного вÑбÑанного знаÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ напеÑаÑаÑÑ ÐºÐ¾Ð½ÐºÑеÑнÑÑ ÑÑÐ°Ð·Ñ Ð¿Ñи опÑеделÑнном ÑÑловии, изÑÑеннÑй нами ÑинÑакÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð´Ð¾Ð²Ð¾Ð»Ñно гÑомоздким, оÑобенно еÑли имееÑÑÑ Ð±Ð¾Ð»ÑÑое колиÑеÑÑво ваÑианÑов вÑбоÑа.
Ð ÑÑом ÑлÑÑае нам Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ switch
â он пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð´Ð½Ð¾ единÑÑвенное вÑÑажение или знаÑение, а заÑем пÑоÑмаÑÑÐ¸Ð²Ð°ÐµÑ ÑÑд ваÑианÑов, пока не найдÑÑ Ð²Ð°ÑианÑ, ÑооÑвеÑÑÑвÑÑÑий ÑÑÐ¾Ð¼Ñ Ð·Ð½Ð°ÑениÑ, поÑле Ñего вÑполнÑÐµÑ ÐºÐ¾Ð´, назнаÑеннÑй ÑÑÐ¾Ð¼Ñ Ð²Ð°ÑианÑÑ. ÐÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑÑого опеÑаÑоÑа:
switch (вÑÑажение) { case choice1: вÑполниÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ break; case choice2: вÑполниÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´, а не пÑедÑдÑÑий break; // ваÑианÑов Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð»Ñбое колиÑеÑÑво default: а вообÑе-Ñо, вÑполниÑÑ ÑолÑко ÑÑÐ¾Ñ ÐºÐ¾Ð´ }
ЧÑо Ð¼Ñ Ð¸Ð¼ÐµÐµÐ¼:
switch
, за коÑоÑÑм ÑледÑÐµÑ Ð¿Ð°Ñа кÑÑглÑÑ
Ñкобок.case
, за коÑоÑÑм ÑледÑÐµÑ Ð²Ð°ÑÐ¸Ð°Ð½Ñ Ð²ÑбоÑа (именно он пÑовеÑÑеÑÑÑ Ð½Ð° ÑооÑвеÑÑÑвие вÑÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ знаÑениÑ) и двоеÑоÑие.break
, за коÑоÑÑм ÑледÑÐµÑ ÑоÑка Ñ Ð·Ð°Ð¿ÑÑой. ÐÑли ваÑÐ¸Ð°Ð½Ñ Ñовпал Ñ Ð²ÑÑажением или знаÑением, бÑаÑÐ·ÐµÑ Ð·Ð°ÐºÐ¾Ð½ÑÐ¸Ñ Ð²ÑполнÑÑÑ Ð±Ð»Ð¾Ðº кода, Ð´Ð¾Ð¹Ð´Ñ Ð´Ð¾ опеÑаÑоÑа break
, и пеÑейдÑÑ Ðº вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð´Ð°, ÑаÑположенного поÑле опеÑаÑоÑа switch.default
иÑполÑзÑеÑÑÑ ÑоÑно Ñакже, как лÑбой дÑÑгой ваÑÐ¸Ð°Ð½Ñ Ð²ÑбоÑа (пÑнкÑÑ 3â5) за Ñем иÑклÑÑением, ÑÑо поÑле default
Ð½ÐµÑ Ð´ÑÑгиÑ
ваÑианÑов вÑбоÑа, поÑÑÐ¾Ð¼Ñ Ð¸Ð½ÑÑÑÑкÑÐ¸Ñ break
не ÑÑебÑеÑÑÑ, никакого кода далÑÑе неÑ. ÐÑо ваÑÐ¸Ð°Ð½Ñ Ð²ÑбоÑа по ÑмолÑаниÑ, вÑбиÑаемÑй, еÑли ни один из дÑÑгиÑ
ваÑианÑов не Ñовпал Ñ Ð²ÑÑажением.ÐÑимеÑание: ÐаÑÐ¸Ð°Ð½Ñ Ð²ÑбоÑа default
Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿ÑопÑÑен, еÑли вÑÑажение гаÑанÑиÑованно ÑовпадÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ из ваÑианÑов вÑбоÑа. РпÑоÑивном ÑлÑÑае ваÑÐ¸Ð°Ð½Ñ default
необÑ
одим.
ÐавайÑе ÑаÑÑмоÑÑим ÑеалÑнÑй пÑÐ¸Ð¼ÐµÑ â пеÑепиÑем наÑе пÑиложение пÑогноза Ð¿Ð¾Ð³Ð¾Ð´Ñ Ñ Ð¸ÑполÑзованием опеÑаÑоÑа switch:
<label for="weather">ÐÑбеÑиÑе Ñип Ð¿Ð¾Ð³Ð¾Ð´Ñ ÑегоднÑ: </label>
<select id="weather">
<option value="">--СделайÑе вÑбоÑ--</option>
<option value="sunny">СолнеÑно</option>
<option value="rainy">Ðождливо</option>
<option value="snowing">Снежно</option>
<option value="overcast">ÐблаÑно</option>
</select>
<p></p>
var select = document.querySelector("select");
var para = document.querySelector("p");
select.addEventListener("change", setWeather);
function setWeather() {
var choice = select.value;
switch (choice) {
case "sunny":
para.textContent =
"Ð¡ÐµÐ³Ð¾Ð´Ð½Ñ Ñ
оÑоÑо и ÑолнеÑно. ÐаденÑÑе ÑоÑÑÑ! ÐдиÑе на плÑж или в паÑк, и кÑпиÑе моÑоженое.";
break;
case "rainy":
para.textContent =
"Ðа ÑлиÑе дождÑ. ÐозÑмиÑе Ð¿Ð»Ð°Ñ Ð¸ зонÑ, и не гÑлÑйÑе ÑлиÑком долго";
break;
case "snowing":
para.textContent =
"ÐдÑÑ Ñнег - моÑозно! ÐÑÑÑе вÑего поÑидеÑÑ Ñ ÑаÑкой гоÑÑÑего Ñоколада или ÑлепиÑÑ Ñнеговика.";
break;
case "overcast":
para.textContent =
"ÐÐ¾Ð¶Ð´Ñ Ð½ÐµÑ, но небо ÑеÑое и мÑаÑное; он вÑе Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑÑÑ Ð² лÑбÑÑ Ð¼Ð¸Ð½ÑÑÑ, поÑÑÐ¾Ð¼Ñ Ð½Ð° вÑÑкий ÑлÑÑай возÑмиÑе дождевик.";
break;
default:
para.textContent = "";
}
}
ÐÑимеÑание: ÐÑ Ð¼Ð¾Ð¶ÐµÑе найÑи ÑÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð½Ð° GitHub (Ñакже ÑвидеÑÑ ÐºÐ°Ðº он ÑабоÑаеÑ.)
ТеÑнаÑнÑй опеÑаÑоÑÐÑо поÑледний ÑеоÑеÑиÑеÑкий Ñаздел данной ÑÑаÑÑи и Ð¼Ñ Ð¿ÐµÑейдÑм к пÑакÑиÑеÑким ÑпÑажнениÑм. ТеÑнаÑнÑй или ÑÑловнÑй опеÑаÑÐ¾Ñ Ð¸Ð¼ÐµÐµÑ Ð¿ÑоÑÑой ÑинÑакÑиÑ: он пÑовеÑÑÐµÑ ÑÑловие и возвÑаÑÐ°ÐµÑ Ð¾Ð´Ð½Ð¾ знаÑение или вÑÑажение, еÑли ÑÑловие ÑвлÑеÑÑÑ true
, и дÑÑгое знаÑение/вÑÑажение, еÑли ÑÑловие ÑвлÑеÑÑÑ false
. ЧаÑÑо ÑÑо оÑÐµÐ½Ñ ÑÐ´Ð¾Ð±Ð½Ð°Ñ Ð°Ð»ÑÑеÑнаÑива Ð±Ð»Ð¾ÐºÑ if...else
, позволÑÑÑÐ°Ñ Ð·Ð°ÑÑаÑиваÑÑ Ð¼ÐµÐ½ÑÑие ÑÑÐ¸Ð»Ð¸Ñ Ð½Ð° напиÑание кода, когда имееÑÑÑ Ð²Ñего лиÑÑ Ð´Ð²Ð° ваÑианÑа, вÑбиÑаемÑÑ
на оÑнове ÑÑÐ»Ð¾Ð²Ð¸Ñ true
/false
. ÐбÑÐ°Ñ ÑÑ
ема опеÑаÑоÑа:
( ÑÑловие) ? вÑполниÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ : вÑполниÑÑ ÑÑÐ¾Ñ ÐºÐ¾Ð´ вмеÑÑо пеÑвого
ÐÑиведÑм пÑоÑÑой пÑимеÑ:
var greeting = isBirthday
? "С днÑм ÑождениÑ, г-н ÐÑзнеÑов! ХоÑоÑо вам повеÑелиÑÑÑÑ!"
: "ÐобÑое ÑÑÑо, г-н ÐÑзнеÑов.";
У Ð½Ð°Ñ ÐµÑÑÑ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ isBirthday
, еÑли она true
, Ð¼Ñ Ð¾ÑпÑавлÑем поÑеÑиÑÐµÐ»Ñ Ð¿Ð¾Ð·Ð´Ñавление Ñ Ð´Ð½Ñм ÑождениÑ; еÑли Ð½ÐµÑ â вÑдаÑм ÑÑандаÑÑное пÑивеÑÑÑвие.
ÐÑи иÑполÑзовании ÑеÑнаÑного опеÑаÑоÑа не обÑзаÑелÑно огÑаниÑиваÑÑÑÑ Ð»Ð¸ÑÑ Ð·Ð½Ð°ÑениÑми пеÑеменной, можно вÑполнÑÑÑ ÑÑнкÑии или ÑÑÑоки кода; вÑе, ÑÑо Ñгодно. Ð ÑледÑÑÑем пÑимеÑе показано пÑоÑÑое ÑÑедÑÑво вÑбоÑа ÑемÑ, задаÑÑее внеÑний вид веб-ÑайÑа Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑеÑнаÑного опеÑаÑоÑа.
<label for="theme">ÐÑбеÑиÑе ÑемÑ: </label>
<select id="theme">
<option value="white">ÐелаÑ</option>
<option value="black">ЧÑÑнаÑ</option>
</select>
<h1>ÐÑо мой веб-ÑайÑ</h1>
var select = document.querySelector("select");
var html = document.querySelector("html");
document.body.style.padding = "10px";
function update(bgColor, textColor) {
html.style.backgroundColor = bgColor;
html.style.color = textColor;
}
select.onchange = function () {
select.value === "black"
? update("black", "white")
: update("white", "black");
};
ÐÑ Ð¸ÑполÑзÑем ÑÐ»ÐµÐ¼ÐµÐ½Ñ <select>
Ð´Ð»Ñ Ð²ÑбоÑа ÑÐµÐ¼Ñ (ÑÑÑÐ½Ð°Ñ Ð¸Ð»Ð¸ белаÑ), а Ñакже пÑоÑÑой <h1>
Ð´Ð»Ñ Ð¾ÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÐ° веб-ÑайÑа. ÐÑоме Ñого, Ñ Ð½Ð°Ñ ÐµÑÑÑ ÑÑнкÑÐ¸Ñ update()
, пÑинимаÑÑÐ°Ñ Ð² каÑеÑÑве паÑамеÑÑов (вÑ
однÑÑ
даннÑÑ
) два ÑвеÑа. РкаÑеÑÑве Ñона иÑполÑзÑеÑÑÑ Ð¿ÐµÑвÑй пеÑеданнÑй ÑвеÑ, а в каÑеÑÑве ÑвеÑа ÑекÑÑа â вÑоÑой пеÑеданнÑй ÑвеÑ.
ÐаконеÑ, Ñ Ð½Ð°Ñ ÐµÑÑÑ Ð¾Ð±ÑабоÑÑик ÑобÑÑий onchange , иÑполÑзÑÑÑийÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка ÑÑнкÑии, ÑодеÑжаÑей ÑеÑнаÑнÑй опеÑаÑоÑ. СнаÑала она пÑовеÑÑÐµÑ ÑÑловие â select.value === 'black'
. ÐÑли возвÑаÑаеÑÑÑ true
, Ð¼Ñ Ð·Ð°Ð¿ÑÑкаем ÑÑнкÑÐ¸Ñ update()
Ñ Ð¿Ð°ÑамеÑÑами ÑÑÑного и белого, в ÑезÑлÑÑаÑе Ñего полÑÑаем ÑÑÑнÑй ÑÐ²ÐµÑ Ñона и белÑй ÑÐ²ÐµÑ ÑекÑÑа. ÐÑли возвÑаÑаеÑÑÑ false
, Ð¼Ñ Ð·Ð°Ð¿ÑÑкаем ÑÑнкÑÐ¸Ñ update()
Ñ Ð¿Ð°ÑамеÑÑами белого и ÑÑÑного, в ÑезÑлÑÑаÑе Ñего ÑвеÑа веб-ÑайÑа менÑÑÑÑÑ Ð½Ð° пÑоÑивоположнÑе.
ÐÑимеÑание: ÐÑ Ð¼Ð¾Ð¶ÐµÑе найÑи ÑÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð½Ð° GitHub (Ñакже ÑвидеÑÑ ÐºÐ°Ðº он ÑабоÑаеÑ.)
ÐÑакÑиÑеÑкое ÑпÑажнение: пÑоÑÑой календаÑÑРданном пÑимеÑе Ð²Ñ Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑе нам законÑиÑÑ Ð¿ÑоÑÑое пÑиложение календаÑÑ. Ðод вклÑÑаеÑ:
<select>
, позволÑÑÑий полÑзоваÑÐµÐ»Ñ Ð²ÑбиÑаÑÑ ÑазнÑе меÑÑÑÑ.onchange
Ð´Ð»Ñ Ð¾Ð±Ð½Ð°ÑÑÐ¶ÐµÐ½Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°ÑениÑ, вÑбÑанного в Ð¼ÐµÐ½Ñ <select>
.createCalendar()
, ÑиÑÑÑÑÐ°Ñ ÐºÐ°Ð»ÐµÐ½Ð´Ð°ÑÑ Ð¸ оÑобÑажаÑÑÐ°Ñ Ð¿ÑавилÑнÑй меÑÑÑ Ð² ÑлеменÑе <h1>
.ÐÑ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½Ð°Ð¿Ð¸ÑаÑÑ ÑÑловнÑÑ ÐºÐ¾Ð½ÑÑÑÑкÑÐ¸Ñ Ð² ÑÑнкÑии обÑабоÑÑика onchange
, ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñле комменÑаÑÐ¸Ñ // ÐÐÐÐÐЬТРСЮÐРУСÐÐÐÐÐÐ ÐЫРÐÐÐÐÐÐ
. ÐонÑÑÑÑкÑÐ¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ð°:
choice
. ÐÑо бÑÐ´ÐµÑ Ð·Ð½Ð°Ñение ÑлеменÑа <select>
поÑле Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð·Ð½Ð°ÑениÑ, напÑимеÑ, "ЯнваÑÑ".)days
, ÑавнÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑÐ²Ñ Ð´Ð½ÐµÐ¹ в вÑбÑанном меÑÑÑе. ÐÐ»Ñ ÑÑого нÑжно бÑÐ´ÐµÑ Ð¿ÑовеÑиÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво дней в каждом меÑÑÑе. ÐиÑокоÑнÑй год можно не ÑÑиÑÑваÑÑ.СовеÑÑ:
ÐÑли допÑÑÑили оÑибкÑ, иÑполÑзÑйÑе ÐºÐ½Ð¾Ð¿ÐºÑ Â«Ð¡Ð±ÑоÑ», ÑÑÐ¾Ð±Ñ Ð²ÐµÑнÑÑÑÑÑ Ðº иÑÑ Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð²Ð¸Ð´Ñ Ð¿ÑимеÑа. ÐÑли Ñ Ð²Ð°Ñ ÑовÑем ниÑего не полÑÑаеÑÑÑ, нажмиÑе «ÐоказаÑÑ ÑеÑение».
ÐÑимеÑание: Ð HTML коде внÑÑÑи <select>
Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ð¼ÐµÑÑÑев value=""
Ð²Ð²ÐµÐ´ÐµÐ½Ñ Ð½Ð° ÑÑÑÑком ÑзÑке. СооÑвеÑÑÑвенно ÑÑÑлки на ниÑ
из ваÑего ÑкÑипÑа Ñак же на ÑÑÑÑком. Ðе забÑваем пÑо ÑинÑакÑиÑ.
<h2>Live output</h2>
<div class="output" style="height: 500px;overflow: auto;">
<label for="month">ÐÑбеÑиÑе меÑÑÑ: </label>
<select id="month">
<option value="ЯнваÑÑ">ЯнваÑÑ</option>
<option value="ФевÑалÑ">ФевÑалÑ</option>
<option value="ÐаÑÑ">ÐаÑÑ</option>
<option value="ÐпÑелÑ">ÐпÑелÑ</option>
<option value="Ðай">Ðай</option>
<option value="ÐÑнÑ">ÐÑнÑ</option>
<option value="ÐÑлÑ">ÐÑлÑ</option>
<option value="ÐвгÑÑÑ">ÐвгÑÑÑ</option>
<option value="СенÑÑбÑÑ">СенÑÑбÑÑ</option>
<option value="ÐкÑÑбÑÑ">ÐкÑÑбÑÑ</option>
<option value="ÐоÑбÑÑ">ÐоÑбÑÑ</option>
<option value="ÐекабÑÑ">ÐекабÑÑ</option>
</select>
<h1></h1>
<ul></ul>
</div>
<h2>Editable code</h2>
<p class="a11y-label">
Press Esc to move focus away from the code area (Tab inserts a tab character).
</p>
<textarea id="code" class="playable-code" style="height: 400px;width: 95%">
var select = document.querySelector('select');
var list = document.querySelector('ul');
var h1 = document.querySelector('h1');
select.onchange = function() {
var choice = select.value;
// ÐÐÐÐÐЬТРСЮÐРУСÐÐÐÐÐÐ ÐЫРÐÐÐÐÐÐ
createCalendar(days, choice);
}
function createCalendar(days, choice) {
list.innerHTML = '';
h1.textContent = choice;
for (var i = 1; i <= days; i++) {
var listItem = document.createElement('li');
listItem.textContent = i;
list.appendChild(listItem);
}
}
createCalendar(31,'ЯнваÑÑ');
</textarea>
<div class="playable-buttons">
<input id="reset" type="button" value="СбÑоÑ" />
<input id="solution" type="button" value="ÐоказаÑÑ ÑеÑение" />
</div>
.output * {
box-sizing: border-box;
}
.output ul {
padding-left: 0;
}
.output li {
display: block;
float: left;
width: 25%;
border: 2px solid white;
padding: 5px;
height: 40px;
background-color: #4a2db6;
color: white;
}
html {
font-family: sans-serif;
}
h2 {
font-size: 16px;
}
.a11y-label {
margin: 0;
text-align: right;
font-size: 0.7rem;
width: 98%;
}
body {
margin: 10px;
background: #f5f9fa;
}
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var solution = document.getElementById("solution");
var code = textarea.value;
var userEntry = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "ÐоказаÑÑ ÑеÑение";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "ÐоказаÑÑ ÑеÑение") {
textarea.value = solutionEntry;
solution.value = "СкÑÑÑÑ ÑеÑение";
} else {
textarea.value = userEntry;
solution.value = "ÐоказаÑÑ ÑеÑение";
}
updateCode();
});
var jsSolution =
"var select = document.querySelector('select');\nvar list = document.querySelector('ul');\nvar h1 = document.querySelector('h1');\n\nselect.onchange = function() {\n var choice = select.value;\n var days = 31;\n if(choice === 'ФевÑалÑ') {\n days = 28;\n } else if(choice === 'ÐпÑелÑ' || choice === 'ÐÑнÑ' || choice === 'СенÑÑбÑÑ'|| choice === 'ÐоÑбÑÑ') {\n days = 30;\n }\n\n createCalendar(days, choice);\n}\n\nfunction createCalendar(days, choice) {\n list.innerHTML = '';\n h1.textContent = choice;\n for(var i = 1; i <= days; i++) {\n var listItem = document.createElement('li');\n listItem.textContent = i;\n list.appendChild(listItem);\n }\n }\n\ncreateCalendar(31,'ЯнваÑÑ');";
var solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
insertAtCaret("\t");
}
if (e.keyCode === 27) {
textarea.blur();
}
};
function insertAtCaret(text) {
var scrollPos = textarea.scrollTop;
var caretPos = textarea.selectionStart;
var front = textarea.value.substring(0, caretPos);
var back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos = caretPos + text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = function () {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "ÐоказаÑÑ ÑеÑение") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
ÐÑакÑиÑеÑкое ÑпÑажнение: ÑаÑÑиÑÑем вÑÐ±Ð¾Ñ ÑвеÑов
Рданном пÑимеÑе Ð²Ñ Ð±ÑдеÑе иÑполÑзоваÑÑ Ð¿ÑÐ¸Ð¼ÐµÑ ÑеÑнаÑного опеÑаÑоÑа, коÑоÑÑй Ð¼Ñ ÑаÑÑмаÑÑивали Ñанее, и пÑевÑаÑиÑе ÑеÑнаÑнÑй опеÑаÑÐ¾Ñ Ð² инÑÑÑÑкÑÐ¸Ñ switch, ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ ÑвелиÑиÑÑ ÐºÐ¾Ð»Ð¸ÑеÑÑво ваÑианÑов вÑбоÑа Ð´Ð»Ñ Ð¿ÑоÑÑого веб-ÑайÑа. ÐоÑмоÑÑиÑе на <select>
â на ÑÑÐ¾Ñ Ñаз он вклÑÑÐ°ÐµÑ Ð½Ðµ два, а ÑелÑÑ
пÑÑÑ Ð²Ð°ÑианÑов Ñем. ÐÑжно добавиÑÑ Ð¸Ð½ÑÑÑÑкÑÐ¸Ñ switch ÑÑÐ°Ð·Ñ Ð¿Ð¾Ð´ комменÑаÑием // ÐÐÐÐÐЬТРÐÐСТРУÐЦÐЮ SWITCH
:
choice
в каÑеÑÑве вÑ
одного вÑÑажениÑ.update()
, коÑоÑой пеÑедаÑÑÑÑ Ð´Ð²Ð° ÑвеÑа: пеÑвÑй â ÑÑо ÑÐ²ÐµÑ Ñона, а вÑоÑой â ÑÐ²ÐµÑ ÑекÑÑа. ÐомниÑе, ÑÑо знаÑÐµÐ½Ð¸Ñ ÑвеÑов â ÑÑо ÑÑÑоковÑе знаÑениÑ, поÑÑÐ¾Ð¼Ñ Ð¸Ñ
нÑжно заклÑÑаÑÑ Ð² кавÑÑки.ÐÑли допÑÑÑили оÑибкÑ, иÑполÑзÑйÑе ÐºÐ½Ð¾Ð¿ÐºÑ Â«Ð¡Ð±ÑоÑ», ÑÑÐ¾Ð±Ñ Ð²ÐµÑнÑÑÑÑÑ Ðº иÑÑ Ð¾Ð´Ð½Ð¾Ð¼Ñ Ð²Ð¸Ð´Ñ Ð¿ÑимеÑа. ÐÑли Ñ Ð²Ð°Ñ ÑовÑем ниÑего не полÑÑаеÑÑÑ, нажмиÑе «ÐоказаÑÑ ÑеÑение».
<div class="output" style="height: 300px;">
<label for="theme">ÐÑбеÑиÑе ÑемÑ: </label>
<select id="theme">
<option value="white">ÐелаÑ</option>
<option value="black">ЧÑÑнаÑ</option>
<option value="purple">ÐиловаÑ</option>
<option value="yellow">ÐÑлÑаÑ</option>
<option value="psychedelic">ÐÑиÑ
оделиÑеÑкаÑ</option>
</select>
<h1>ÐÑо мой веб-ÑайÑ</h1>
</div>
<hr />
<textarea id="code" class="playable-code" style="height: 450px;">
var select = document.querySelector('select');
var html = document.querySelector('.output');
select.onchange = function() {
var choice = select.value;
// ÐÐÐÐÐЬТРÐÐСТРУÐЦÐЮ SWITCH
}
function update(bgColor, textColor) {
html.style.backgroundColor = bgColor;
html.style.color = textColor;
}</textarea
>
<div class="playable-buttons">
<input id="reset" type="button" value="СбÑоÑ" />
<input id="solution" type="button" value="ÐоказаÑÑ ÑеÑение" />
</div>
var textarea = document.getElementById("code");
var reset = document.getElementById("reset");
var solution = document.getElementById("solution");
var code = textarea.value;
function updateCode() {
eval(textarea.value);
}
reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
solution.value = "ÐоказаÑÑ ÑеÑение";
updateCode();
});
solution.addEventListener("click", function () {
if (solution.value === "ÐоказаÑÑ ÑеÑение") {
textarea.value = solutionEntry;
solution.value = "СкÑÑÑÑ ÑеÑение";
} else {
textarea.value = userEntry;
solution.value = "ÐоказаÑÑ ÑеÑение";
}
updateCode();
});
var jsSolution =
"var select = document.querySelector('select');\nvar html = document.querySelector('.output');\n\nselect.onchange = function() {\n var choice = select.value;\n\n switch(choice) {\n case 'black':\n update('black','white');\n break;\n case 'white':\n update('white','black');\n break;\n case 'purple':\n update('purple','white');\n break;\n case 'yellow':\n update('yellow','darkgray');\n break;\n case 'psychedelic':\n update('lime','purple');\n break;\n }\n}\n\nfunction update(bgColor, textColor) {\n html.style.backgroundColor = bgColor;\n html.style.color = textColor;\n}";
var solutionEntry = jsSolution;
textarea.addEventListener("input", updateCode);
window.addEventListener("load", updateCode);
// stop tab key tabbing out of textarea and
// make it write a tab at the caret position instead
textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
insertAtCaret("\t");
}
if (e.keyCode === 27) {
textarea.blur();
}
};
function insertAtCaret(text) {
var scrollPos = textarea.scrollTop;
var caretPos = textarea.selectionStart;
var front = textarea.value.substring(0, caretPos);
var back = textarea.value.substring(
textarea.selectionEnd,
textarea.value.length,
);
textarea.value = front + text + back;
caretPos = caretPos + text.length;
textarea.selectionStart = caretPos;
textarea.selectionEnd = caretPos;
textarea.focus();
textarea.scrollTop = scrollPos;
}
// Update the saved userCode every time the user updates the text area code
textarea.onkeyup = function () {
// We only want to save the state when the user code is being shown,
// not the solution, so that solution is not saved over the user code
if (solution.value === "ÐоказаÑÑ ÑеÑение") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
}
updateCode();
};
ÐаклÑÑение
ÐÑо вÑе, ÑÑо вам нÑжно знаÑÑ Ð½Ð° даннÑй Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¾Ð± ÑÑловнÑÑ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ ÑÑÑÑкÑÑÑÐ°Ñ ! УвеÑенÑ, Ð²Ñ Ñ Ð¾ÑоÑо ÑазобÑалиÑÑ Ð² ÑеоÑеÑиÑеÑком маÑеÑиале и Ñ Ð»ÑгкоÑÑÑÑ ÑпÑавилиÑÑ Ñ Ð¿ÑедложеннÑми ÑпÑажнениÑми. ÐÑли же ÑÑо-Ñо оÑÑалоÑÑ Ð´Ð»Ñ Ð²Ð°Ñ Ð½ÐµÐ¿Ð¾Ð½ÑÑнÑм, пеÑеÑиÑайÑе ÑÑаÑÑÑ ÐµÑÑ Ñаз или ÑвÑжиÑеÑÑ Ñ Ð½Ð°Ð¼Ð¸.
СмоÑÑиÑе ÑакжеRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4