Merge branch 'staging' of github.com:FreeCodeCamp/freecodecamp into staging
This commit is contained in:
@ -1163,6 +1163,10 @@ hr {
|
|||||||
font: normal normal normal 14px/1 FontAwesome !important;
|
font: normal normal normal 14px/1 FontAwesome !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#testSuite > div >.row {
|
||||||
|
margin: 0!important;
|
||||||
|
}
|
||||||
|
|
||||||
//uncomment this to see the dimensions of all elements outlined in red
|
//uncomment this to see the dimensions of all elements outlined in red
|
||||||
//* {
|
//* {
|
||||||
// border-color: red;
|
// border-color: red;
|
||||||
|
@ -71,6 +71,17 @@ editor.on("keyup", function () {
|
|||||||
var nodeEnv = prodOrDev === 'production' ? 'http://www.freecodecamp.com' : 'http://localhost:3001';
|
var nodeEnv = prodOrDev === 'production' ? 'http://www.freecodecamp.com' : 'http://localhost:3001';
|
||||||
function updatePreview() {
|
function updatePreview() {
|
||||||
editorValueForIFrame = editor.getValue();
|
editorValueForIFrame = editor.getValue();
|
||||||
|
var failedCommentTest = false;
|
||||||
|
if(editorValueForIFrame.match(/\<\!\-\-/gi) && editorValueForIFrame.match(/\-\-\>/gi) == null){
|
||||||
|
failedCommentTest = true;
|
||||||
|
}
|
||||||
|
else if(editorValueForIFrame.match(/\<\!\-\-/gi) && editorValueForIFrame.match(/\<\!\-\-/gi).length > editorValueForIFrame.match(/\-\-\>/gi).length){
|
||||||
|
failedCommentTest = true;
|
||||||
|
}
|
||||||
|
if(failedCommentTest){
|
||||||
|
editor.setValue(editor.getValue()+ "-->");
|
||||||
|
editorValueForIFrame = editorValueForIFrame + "-->";
|
||||||
|
}
|
||||||
goodTests = 0;
|
goodTests = 0;
|
||||||
var previewFrame = document.getElementById('preview');
|
var previewFrame = document.getElementById('preview');
|
||||||
var preview = previewFrame.contentDocument || previewFrame.contentWindow.document;
|
var preview = previewFrame.contentDocument || previewFrame.contentWindow.document;
|
||||||
|
@ -100,12 +100,25 @@ function bonfireExecute() {
|
|||||||
userTests = null;
|
userTests = null;
|
||||||
$('#codeOutput').empty();
|
$('#codeOutput').empty();
|
||||||
var userJavaScript = myCodeMirror.getValue();
|
var userJavaScript = myCodeMirror.getValue();
|
||||||
|
var failedCommentTest = false;
|
||||||
|
if(userJavaScript.match(/\/\*/gi) && userJavaScript.match(/\*\//gi) == null){
|
||||||
|
failedCommentTest = true;
|
||||||
|
}
|
||||||
|
else if(!failedCommentTest && userJavaScript.match(/\/\*/gi) && userJavaScript.match(/\/\*/gi).length > userJavaScript.match(/\*\//gi).length){
|
||||||
|
failedCommentTest = true;
|
||||||
|
}
|
||||||
userJavaScript = removeComments(userJavaScript);
|
userJavaScript = removeComments(userJavaScript);
|
||||||
userJavaScript = scrapeTests(userJavaScript);
|
userJavaScript = scrapeTests(userJavaScript);
|
||||||
// simple fix in case the user forgets to invoke their function
|
// simple fix in case the user forgets to invoke their function
|
||||||
|
|
||||||
submit(userJavaScript, function(cls, message) {
|
submit(userJavaScript, function(cls, message) {
|
||||||
if (cls) {
|
if(failedCommentTest){
|
||||||
|
myCodeMirror.setValue(myCodeMirror.getValue() + "*/");
|
||||||
|
console.log('Caught Unfinished Comment');
|
||||||
|
codeOutput.setValue("Unfinished mulit-line comment");
|
||||||
|
failedCommentTest = false;
|
||||||
|
}
|
||||||
|
else if (cls) {
|
||||||
codeOutput.setValue(message.error);
|
codeOutput.setValue(message.error);
|
||||||
runTests('Error', null);
|
runTests('Error', null);
|
||||||
} else {
|
} else {
|
||||||
|
@ -80,7 +80,7 @@
|
|||||||
"sym([1, 2, 3], [5, 2, 1, 4]);"
|
"sym([1, 2, 3], [5, 2, 1, 4]);"
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"expect(sym([1, 2, 3], [5, 2, 1, 4])).to.equal([3, 5, 4]);",
|
"assert.deepEqual(sym([1, 2, 3], [5, 2, 1, 4]), [3, 5, 4], 'should return an array of unique values');",
|
||||||
"assert.deepEqual(sym([1, 2, 5], [2, 3, 5], [3, 4, 5]), [1, 4, 5], 'should return the symmetric difference of the given arrays');",
|
"assert.deepEqual(sym([1, 2, 5], [2, 3, 5], [3, 4, 5]), [1, 4, 5], 'should return the symmetric difference of the given arrays');",
|
||||||
"assert.deepEqual(sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]), [1, 4, 5], 'should return an array of unique values');",
|
"assert.deepEqual(sym([1, 1, 2, 5], [2, 2, 3, 5], [3, 4, 5, 5]), [1, 4, 5], 'should return an array of unique values');",
|
||||||
"assert.deepEqual(sym([1, 1]), [1], 'should return an array of unique values');"
|
"assert.deepEqual(sym([1, 1]), [1], 'should return an array of unique values');"
|
||||||
|
@ -157,7 +157,7 @@
|
|||||||
"assert((function(){if(typeof(firstLetterOfLastName) !== \"undefined\" && editor.getValue().match(/\\[0\\]/gi) && typeof(firstLetterOfLastName) === \"string\" && firstLetterOfLastName === \"L\"){return(true);}else{return(false);}})(), 'The first letter of firstLetterOfLastName should be a L');"
|
"assert((function(){if(typeof(firstLetterOfLastName) !== \"undefined\" && editor.getValue().match(/\\[0\\]/gi) && typeof(firstLetterOfLastName) === \"string\" && firstLetterOfLastName === \"L\"){return(true);}else{return(false);}})(), 'The first letter of firstLetterOfLastName should be a L');"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"var firstLetterOfLastName = \"\";",
|
"var firstLetterOfFirstName = \"\";",
|
||||||
"var firstLetterOfLastName = \"\";",
|
"var firstLetterOfLastName = \"\";",
|
||||||
"",
|
"",
|
||||||
"var firstName = \"Ada\";",
|
"var firstName = \"Ada\";",
|
||||||
@ -336,7 +336,7 @@
|
|||||||
"// Only change code above this line.",
|
"// Only change code above this line.",
|
||||||
"// We use this function to show you the value of your variable in your output box.",
|
"// We use this function to show you the value of your variable in your output box.",
|
||||||
"// You'll learn about functions soon.",
|
"// You'll learn about functions soon.",
|
||||||
"(function(z){return('product='+z);})(product)"
|
"(function(z){return('product='+z);})(product);"
|
||||||
],
|
],
|
||||||
"type": "waypoint",
|
"type": "waypoint",
|
||||||
"challengeType": 1
|
"challengeType": 1
|
||||||
@ -398,7 +398,8 @@
|
|||||||
"Replace the <code>0.0</code> with the correct number so that you get the result mentioned in the comments."
|
"Replace the <code>0.0</code> with the correct number so that you get the result mentioned in the comments."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert((function(){if(product === 5.0 && editor.getValue().match(/\\*/g)){return(true);}else{return(false);}})(), 'Make the variable <code>product</code> equal 5.0.');"
|
"assert((function(){if(product === 5.0 && editor.getValue().match(/\\*/g)){return(true);}else{return(false);}})(), 'Make the variable <code>product</code> equal 5.0.');",
|
||||||
|
"assert((function(){if(quotient === 2.2 && editor.getValue().match(/\\//g)){return(true);}else{return(false);}})(), 'Make the variable <code>quotient</code> equal 2.2.');"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"var quotient = 4.4 / 2.0; // equals 2.2",
|
"var quotient = 4.4 / 2.0; // equals 2.2",
|
||||||
@ -553,9 +554,9 @@
|
|||||||
"//console.log(removed); // logs 3",
|
"//console.log(removed); // logs 3",
|
||||||
"",
|
"",
|
||||||
"var myArray = [\"John\", 23, [\"cat\", 2]];",
|
"var myArray = [\"John\", 23, [\"cat\", 2]];",
|
||||||
"var removed = myArray; // This should be [\"cat\", 2] and myArray should now be [\"John\", 23]",
|
|
||||||
"// Only change code below this line.",
|
"// Only change code below this line.",
|
||||||
"",
|
"",
|
||||||
|
"var removed = myArray; // This should be [\"cat\", 2] and myArray should now be [\"John\", 23]",
|
||||||
"",
|
"",
|
||||||
"// Only change code above this line.",
|
"// Only change code above this line.",
|
||||||
"// We use this function to show you the value of your variable in your output box.",
|
"// We use this function to show you the value of your variable in your output box.",
|
||||||
@ -614,11 +615,12 @@
|
|||||||
"// ourArray now equals [\"J\", [\"cat\"]]",
|
"// ourArray now equals [\"J\", [\"cat\"]]",
|
||||||
"",
|
"",
|
||||||
"var myArray = [\"John\", 23, [\"dog\", 3]];",
|
"var myArray = [\"John\", 23, [\"dog\", 3]];",
|
||||||
"var myRemoved = myArray; // This should be [\"John\"] and myArray should now be [23, [\"dog\", 3]]",
|
|
||||||
"// Only change code below this line.",
|
"// Only change code below this line.",
|
||||||
"",
|
"",
|
||||||
|
"var myRemoved = myArray; // This should be [\"John\"] and myArray should now be [23, [\"dog\", 3]]",
|
||||||
"",
|
"",
|
||||||
"// Only change code above this line.",
|
"// Only change code above this line.",
|
||||||
|
"",
|
||||||
"// We use this function to show you the value of your variable in your output box.",
|
"// We use this function to show you the value of your variable in your output box.",
|
||||||
"// You'll learn about functions soon.",
|
"// You'll learn about functions soon.",
|
||||||
"(function(y, z){return('myArray = ' + JSON.stringify(y) + ' & myRemoved = ' + JSON.stringify(z));})(myArray, myRemoved);"
|
"(function(y, z){return('myArray = ' + JSON.stringify(y) + ' & myRemoved = ' + JSON.stringify(z));})(myArray, myRemoved);"
|
||||||
@ -726,9 +728,9 @@
|
|||||||
],
|
],
|
||||||
"challengeSeed":[
|
"challengeSeed":[
|
||||||
"//var ourDog = {",
|
"//var ourDog = {",
|
||||||
"// \"name\": \"Camper\"",
|
"// \"name\": \"Camper\",",
|
||||||
"// \"legs\": 4",
|
"// \"legs\": 4,",
|
||||||
"// \"tails\": 1",
|
"// \"tails\": 1,",
|
||||||
"// \"friends\": [\"everything!\"]",
|
"// \"friends\": [\"everything!\"]",
|
||||||
"//};",
|
"//};",
|
||||||
"",
|
"",
|
||||||
@ -766,9 +768,9 @@
|
|||||||
],
|
],
|
||||||
"challengeSeed":[
|
"challengeSeed":[
|
||||||
"// var ourDog = {",
|
"// var ourDog = {",
|
||||||
"// \"name\": \"Camper\"",
|
"// \"name\": \"Camper\",",
|
||||||
"// \"legs\": 4",
|
"// \"legs\": 4,",
|
||||||
"// \"tails\": 1",
|
"// \"tails\": 1,",
|
||||||
"// \"friends\": [\"everything!\"]",
|
"// \"friends\": [\"everything!\"]",
|
||||||
"// };",
|
"// };",
|
||||||
"",
|
"",
|
||||||
@ -902,7 +904,7 @@
|
|||||||
],
|
],
|
||||||
"challengeSeed":[
|
"challengeSeed":[
|
||||||
"function myFunction(){",
|
"function myFunction(){",
|
||||||
" // Make myFunction return a random number between zero and nine instead of a decimal",
|
" // Make myFunction return a random number betweenzero and nine> instead of a decimal",
|
||||||
"",
|
"",
|
||||||
" // Only change code below this line.",
|
" // Only change code below this line.",
|
||||||
"",
|
"",
|
||||||
@ -922,7 +924,7 @@
|
|||||||
"title": "Generate Random Whole Numbers within a Range",
|
"title": "Generate Random Whole Numbers within a Range",
|
||||||
"difficulty":"9.9829",
|
"difficulty":"9.9829",
|
||||||
"description":[
|
"description":[
|
||||||
"We can use a certain mathematical expression to get a random number between between two numbers.",
|
"We can use a certain mathematical expression to get a random number between two numbers.",
|
||||||
"<code>Math.floor(Math.random() * (max - min + 1)) + min</code>",
|
"<code>Math.floor(Math.random() * (max - min + 1)) + min</code>",
|
||||||
"By using this we can control the output of a random number."
|
"By using this we can control the output of a random number."
|
||||||
],
|
],
|
||||||
@ -956,7 +958,7 @@
|
|||||||
"We can use if statements in JavaScript to only execute code if a certain condition is met.",
|
"We can use if statements in JavaScript to only execute code if a certain condition is met.",
|
||||||
"if statements require some sort of boolean condition evaluate.",
|
"if statements require some sort of boolean condition evaluate.",
|
||||||
"Example:",
|
"Example:",
|
||||||
"<code> if (1 == 2) {",
|
"<code> if (1 == 2) {</code>",
|
||||||
"<code>  return(true);</code>",
|
"<code>  return(true);</code>",
|
||||||
"<code>}</code>",
|
"<code>}</code>",
|
||||||
"<code>else {</code>",
|
"<code>else {</code>",
|
||||||
@ -992,7 +994,7 @@
|
|||||||
"title": "Sift through Text with Regular Expressions",
|
"title": "Sift through Text with Regular Expressions",
|
||||||
"difficulty":"9.984",
|
"difficulty":"9.984",
|
||||||
"description":[
|
"description":[
|
||||||
"<code>Regular expressions</code> are way to find certain words or patterns inside of <code>strings</code>.",
|
"<code>Regular expressions</code> are used to find certain words or patterns inside of <code>strings</code>.",
|
||||||
"For example, if we wanted to find the number of times the word <code>the</code> occurred in the string <code>The dog chased the cat</code>, we could use the following <code>regular expression</code>: <code>\/the+\/gi</code>",
|
"For example, if we wanted to find the number of times the word <code>the</code> occurred in the string <code>The dog chased the cat</code>, we could use the following <code>regular expression</code>: <code>\/the+\/gi</code>",
|
||||||
"Let's break this down a bit:",
|
"Let's break this down a bit:",
|
||||||
"<code>the</code> is the pattern we want to match.",
|
"<code>the</code> is the pattern we want to match.",
|
||||||
@ -1092,7 +1094,7 @@
|
|||||||
],
|
],
|
||||||
"tests":[
|
"tests":[
|
||||||
"assert(test === 36, 'Your RegEx should have found seven spaces in the <code>testString</code>.');",
|
"assert(test === 36, 'Your RegEx should have found seven spaces in the <code>testString</code>.');",
|
||||||
"assert(editor.getValue().match(/\\/\\\\S\\/gi/gi), 'You should be using the following expression <code>/\\S+/gi</code> to find the spaces in the <code>testString</code>.');"
|
"assert(editor.getValue().match(/\\/\\\\S\\/gi/gi), 'You should be using the following expression <code>/\\+S/gi</code> to find the spaces in the <code>testString</code>.');"
|
||||||
],
|
],
|
||||||
"challengeSeed":[
|
"challengeSeed":[
|
||||||
"var test = (function(){",
|
"var test = (function(){",
|
||||||
|
@ -898,7 +898,7 @@
|
|||||||
"<img class=\"img-responsive\" src=\"https://www.evernote.com/l/AHTFU358y71AV6mokPeuTEgrZVdUJ4A8v3AB/image.png\" alt=\"An \"inline\" button is as small as the text it contains. In this image, it's centered. Below it is a \"block-level\" button, which stretches to fill the entire horizontal space.'>",
|
"<img class=\"img-responsive\" src=\"https://www.evernote.com/l/AHTFU358y71AV6mokPeuTEgrZVdUJ4A8v3AB/image.png\" alt=\"An \"inline\" button is as small as the text it contains. In this image, it's centered. Below it is a \"block-level\" button, which stretches to fill the entire horizontal space.'>",
|
||||||
"By using the <code>span</code> element, you can put several elements together, and even style different parts of the same element differently.",
|
"By using the <code>span</code> element, you can put several elements together, and even style different parts of the same element differently.",
|
||||||
"Nest the word \"love\" in your \"Things cats love\" element below within a <code>span</code> element. Then give that <code>span</code> the class <code>text-danger</code> to make the text red.",
|
"Nest the word \"love\" in your \"Things cats love\" element below within a <code>span</code> element. Then give that <code>span</code> the class <code>text-danger</code> to make the text red.",
|
||||||
"Here's how you would do this with the \"Top 3 things cats hate\" element: <code><p>Top 3 things cats <span class\"text-danger\">hate</span></p></code>"
|
"Here's how you would do this with the \"Top 3 things cats hate\" element: <code><p>Top 3 things cats <span class = \"text-danger\">hate</span></p></code>"
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($(\"p span\") && $(\"p span\").length > 0, 'Your <code>span</code> element should be inside your <code>p</code> element.')",
|
"assert($(\"p span\") && $(\"p span\").length > 0, 'Your <code>span</code> element should be inside your <code>p</code> element.')",
|
||||||
|
@ -491,7 +491,7 @@
|
|||||||
"description": [
|
"description": [
|
||||||
"Apply the <code>red-text</code> class to your <code>h2</code> and <code>p</code> elements.",
|
"Apply the <code>red-text</code> class to your <code>h2</code> and <code>p</code> elements.",
|
||||||
"Remember that you can attach classes to HTML elements by using <code>class=\"your-class-here\"</code> within the relevant element's opening tag.",
|
"Remember that you can attach classes to HTML elements by using <code>class=\"your-class-here\"</code> within the relevant element's opening tag.",
|
||||||
"Remember that CSS selectors require a period at the beginning like this: <code>.blue-text { color: blue; }</code>, but that class declarations don't use a period, like this: <code><h2 class=\"blue-text\">CatPhotoApp<h2></code>."
|
"Remember that CSS class selectors require a period at the beginning like this: <code>.blue-text { color: blue; }</code>, but that class declarations don't use a period, like this: <code><h2 class=\"blue-text\">CatPhotoApp<h2></code>."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($(\"h2\").css(\"color\") === \"rgb(255, 0, 0)\", 'Your <code>h2</code> element should be red.')",
|
"assert($(\"h2\").css(\"color\") === \"rgb(255, 0, 0)\", 'Your <code>h2</code> element should be red.')",
|
||||||
@ -2530,14 +2530,14 @@
|
|||||||
"difficulty": 1.392,
|
"difficulty": 1.392,
|
||||||
"description": [
|
"description": [
|
||||||
"One cool thing about <code>id</code> attributes is that, like classes, you can style them using CSS.",
|
"One cool thing about <code>id</code> attributes is that, like classes, you can style them using CSS.",
|
||||||
"Here's an example of how you can take your element with the <code>id</code> attribute of <code>cat-photo-element</code> and give it the background color of green. In your <code>style</code> element: <code>#cat-photo-element { background-color: green; }></code>",
|
"Here's an example of how you can take your element with the <code>id</code> attribute of <code>cat-photo-element</code> and give it the background color of green. In your <code>style</code> element: <code>#cat-photo-element { background-color: green; }</code>",
|
||||||
"Note that inside your <code>style</code> element, you always reference classes by putting a <code>.</code> in front of their names. You always reference ids by putting a <code>#</code> in front of their names.",
|
"Note that inside your <code>style</code> element, you always reference classes by putting a <code>.</code> in front of their names. You always reference ids by putting a <code>#</code> in front of their names.",
|
||||||
"Try giving your form, which now has the <code>id</code> attribute of <code>cat-photo-form</code>, a green background."
|
"Try giving your form, which now has the <code>id</code> attribute of <code>cat-photo-form</code>, a green background."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($(\"form\").attr(\"id\") === \"cat-photo-form\", 'Give your <code>form</code> element the id of <code>cat-photo-form</code>.')",
|
"assert($(\"form\").attr(\"id\") === \"cat-photo-form\", 'Give your <code>form</code> element the id of <code>cat-photo-form</code>.')",
|
||||||
"assert($(\"#cat-photo-form\").css(\"background-color\") === \"rgb(0, 128, 0)\", 'Your <code>form</code> element should have the <code>background-color</code> of green.')",
|
"assert($(\"#cat-photo-form\").css(\"background-color\") === \"rgb(0, 128, 0)\", 'Your <code>form</code> element should have the <code>background-color</code> of green.')",
|
||||||
"assert(editor.match(/<form.*cat-photo-form.*>/gi) && editor.match(/<form.*cat-photo-form.*>/gi).length > 0, 'Make sure your <code>form</code> element has both an <code>id</code> attribute.')",
|
"assert(editor.match(/<form.*cat-photo-form.*>/gi) && editor.match(/<form.*cat-photo-form.*>/gi).length > 0, 'Make sure your <code>form</code> element has an <code>id</code> attribute.')",
|
||||||
"assert(!editor.match(/<form.*style.*>/gi) && !editor.match(/<form.*class.*>/gi), 'Do not give your <code>form</code> any <code>class</code> or <code>style</code> attributes.')"
|
"assert(!editor.match(/<form.*style.*>/gi) && !editor.match(/<form.*class.*>/gi), 'Do not give your <code>form</code> any <code>class</code> or <code>style</code> attributes.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
|
@ -71,10 +71,10 @@
|
|||||||
],
|
],
|
||||||
"MDNlinks": [
|
"MDNlinks": [
|
||||||
"Comparison Operators",
|
"Comparison Operators",
|
||||||
"String.slice()",
|
"Array.slice()",
|
||||||
"Array.filter()",
|
"Array.filter()",
|
||||||
"Array.indexOf()",
|
"Array.indexOf()",
|
||||||
"String.concat()"
|
"Array.concat()"
|
||||||
],
|
],
|
||||||
"type": "bonfire",
|
"type": "bonfire",
|
||||||
"challengeType": 5,
|
"challengeType": 5,
|
||||||
|
@ -624,7 +624,7 @@
|
|||||||
"Here's an example of how you would use the <code>parent()</code> function: <code>$(\"#left-well\").parent().css(\"background-color\", \"blue\")</code>"
|
"Here's an example of how you would use the <code>parent()</code> function: <code>$(\"#left-well\").parent().css(\"background-color\", \"blue\")</code>"
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($(\"#left-well\").css(\"background-color\") === 'rgb(255, 0, 0)', 'Your <code>left-well</code> element should have a red background.')",
|
"assert($(\"#left-well\").css(\"background-color\") === 'red' || $(\"#left-well\").css(\"background-color\") === 'rgb(255, 0, 0)' || $(\"#left-well\").css(\"background-color\").toLowerCase() === '#ff0000' || $(\"#left-well\").css(\"background-color\").toLowerCase() === '#f00', 'Your <code>left-well</code> element should have a red background.')",
|
||||||
"assert(editor.match(/\\.parent\\(\\)\\.css/g), 'You should use the <code>parent()</code> function to modify this element.')",
|
"assert(editor.match(/\\.parent\\(\\)\\.css/g), 'You should use the <code>parent()</code> function to modify this element.')",
|
||||||
"assert(editor.match(/<div class=\"well\" id=\"left-well\">/g), 'Only use jQuery to add these classes to the element.')"
|
"assert(editor.match(/<div class=\"well\" id=\"left-well\">/g), 'Only use jQuery to add these classes to the element.')"
|
||||||
],
|
],
|
||||||
@ -730,7 +730,7 @@
|
|||||||
"description": [
|
"description": [
|
||||||
"You've seen why id attributes are so convenient for targeting with jQuery selectors. But you won't always have such neat ids to work with.",
|
"You've seen why id attributes are so convenient for targeting with jQuery selectors. But you won't always have such neat ids to work with.",
|
||||||
"Fortunately, jQuery has some other tricks for targeting the right elements.",
|
"Fortunately, jQuery has some other tricks for targeting the right elements.",
|
||||||
"jQuery has a function called <code>:nth-child()</code> that will allow you select the nth element of a certain class or element type.",
|
"jQuery uses CSS Selectors to target elements. <code>target:nth-child(n)</code> css selector allows you to select all the nth element with the target class or element type.",
|
||||||
"Make the second child in each of your well elements bounce.",
|
"Make the second child in each of your well elements bounce.",
|
||||||
"Here's how you would give the third element in each well bounce: <code>$(\".target:nth-child(3)\").addClass(\"animated bounce\");</code>"
|
"Here's how you would give the third element in each well bounce: <code>$(\".target:nth-child(3)\").addClass(\"animated bounce\");</code>"
|
||||||
],
|
],
|
||||||
|
@ -233,13 +233,13 @@
|
|||||||
"difficulty":0,
|
"difficulty":0,
|
||||||
"description":[
|
"description":[
|
||||||
"filter is a useful method that can filter out values that don't match a certain criteria",
|
"filter is a useful method that can filter out values that don't match a certain criteria",
|
||||||
"Let's remove all the values greater than six",
|
"Let's remove all the values greater than five",
|
||||||
"<code>array = array.filter(function(val) {</code>",
|
"<code>array = array.filter(function(val) {</code>",
|
||||||
"<code>  return(val<4);</code>",
|
"<code>  return(val<4);</code>",
|
||||||
"<code>});</code>"
|
"<code>});</code>"
|
||||||
],
|
],
|
||||||
"tests":[
|
"tests":[
|
||||||
"assert.deepEqual(array, [1,2,3,4,5], 'You should have removed all the values from the array that are less than six');",
|
"assert.deepEqual(array, [1,2,3,4,5], 'You should have removed all the values from the array that are greater than five');",
|
||||||
"assert(editor.getValue().match(/array\\.filter\\(/gi), 'You should be using the filter method to remove the values from the array');",
|
"assert(editor.getValue().match(/array\\.filter\\(/gi), 'You should be using the filter method to remove the values from the array');",
|
||||||
"assert(editor.getValue().match(/\\[1\\,2\\,3\\,4\\,5\\,6\\,7\\,8\\,9\\,10\\]/gi), 'You should only be using .filter to modify the contents of the array');"
|
"assert(editor.getValue().match(/\\[1\\,2\\,3\\,4\\,5\\,6\\,7\\,8\\,9\\,10\\]/gi), 'You should only be using .filter to modify the contents of the array');"
|
||||||
],
|
],
|
||||||
|
@ -22,7 +22,7 @@ export default function prodErrorHandler() {
|
|||||||
var accept = accepts(req);
|
var accept = accepts(req);
|
||||||
var type = accept.type('html', 'json', 'text');
|
var type = accept.type('html', 'json', 'text');
|
||||||
|
|
||||||
var message = 'opps! Something went wrong. Please try again later';
|
var message = 'Oops! Something went wrong. Please try again later';
|
||||||
if (type === 'html') {
|
if (type === 'html') {
|
||||||
if (typeof req.flash === 'function') {
|
if (typeof req.flash === 'function') {
|
||||||
req.flash('errors', {
|
req.flash('errors', {
|
||||||
|
@ -18,7 +18,7 @@ block content
|
|||||||
i.fa.fa-linkedin
|
i.fa.fa-linkedin
|
||||||
| Sign in with LinkedIn
|
| Sign in with LinkedIn
|
||||||
br
|
br
|
||||||
p Email sign in is temporarily disabled - we are working to fix this ASAP. Try logging in with an above service that uses the same email address as you normally use to sign in with (other than Twitter).
|
p Email sign in is temporarily disabled - we are working to fix this ASAP.
|
||||||
//p
|
//p
|
||||||
// a(href="/email-signup") Or sign up using your email address here.
|
// a(href="/email-signup") Or sign up using your email address here.
|
||||||
//p
|
//p
|
||||||
|
@ -30,7 +30,6 @@ block content
|
|||||||
.col-xs-12.col-sm-9.col-md-10
|
.col-xs-12.col-sm-9.col-md-10
|
||||||
li.large-p.faded.negative-10
|
li.large-p.faded.negative-10
|
||||||
a(href='#' + challengeBlock.dashedName)= challengeBlock.name
|
a(href='#' + challengeBlock.dashedName)= challengeBlock.name
|
||||||
h3= challengeBlock
|
|
||||||
else
|
else
|
||||||
.hidden-xs.col-sm-3.col-md-2
|
.hidden-xs.col-sm-3.col-md-2
|
||||||
.progress.progress-bar-padding.text-center.thin-progress-bar
|
.progress.progress-bar-padding.text-center.thin-progress-bar
|
||||||
|
@ -73,7 +73,7 @@ block content
|
|||||||
textarea#codeEditor(autofocus=true, style='display: none;')
|
textarea#codeEditor(autofocus=true, style='display: none;')
|
||||||
.col-md-4.col-lg-3
|
.col-md-4.col-lg-3
|
||||||
.hidden-xs.hidden-sm
|
.hidden-xs.hidden-sm
|
||||||
img.iphone-position.iframe-scroll(src="https://s3.amazonaws.com/freecodecamp/iphone6-frame.png")
|
img.iphone-position.iframe-scroll(src="https://s3.amazonaws.com/freecodecamp/iphone6-frame.png", style = "z-index: -2;")
|
||||||
iframe.iphone.iframe-scroll#preview
|
iframe.iphone.iframe-scroll#preview
|
||||||
.spacer
|
.spacer
|
||||||
#complete-courseware-dialog.modal(tabindex='-1')
|
#complete-courseware-dialog.modal(tabindex='-1')
|
||||||
|
Reference in New Issue
Block a user