2017-02-16 43 views
0

Я пытаюсь превратить свой выбор цвета по умолчанию в переменную, поскольку он используется дважды в двух разных функциях. Это то, что я пробовал (между прочим), но он просто не работает? Вот JSFiddle моего кода для тех, кто может попытаться сыграть с ним? Я просто не могу заставить его работать, но кажется, что это должно быть так просто? https://jsfiddle.net/q7bLwt8n/Почему моя переменная jQuery не работает?

var defaultcolor = $(this).css("background-color", "#7fffd4"); 
 

 
$(document).ready(function() { 
 
    for (var i = 0; i < 16; i++) { 
 
    for (var j = 0; j < 16; j++) { 
 
     $('#grid').append('<div class= square></div>'); 
 
    }; 
 
    }; 
 
    $(".square").mouseenter(function() { 
 
    defaultcolor; 
 
    }); 
 

 
    //clears the canvas and resets the color on hover back to #7fffd4// 
 
    $("#clear").click(function() { 
 
    $("#grid").effect("shake"); 
 
    $(".square").css("background-color", "white"); 
 
    $(".square").mouseenter(function() { 
 
     defaultcolor; 
 
    }); 
 
    }); 
 
    //creates a random color for each square when button is clicked// 
 
    $("#randomcolor").click(function() { 
 
    $(".square").mouseenter(function() { 
 
     var randomColorChange = '#' + (Math.random() * 0xFFFFFF << 0).toString(16); 
 
     $(this).css('background-color', randomColorChange); 
 
    }); 
 
    }); 
 
});
* { 
 
    margin: 0; 
 
    padding: 0; 
 
    border: 0; 
 
    box-sizing: border-box; 
 
} 
 

 
body { 
 
    font-family: Arial, sans-serif; 
 
    background-color: white; 
 
} 
 

 
h1 { 
 
    color: white; 
 
    padding-top: 8px; 
 
    padding-bottom: 8px; 
 
    text-align: center; 
 
    background-color: #191919; 
 
} 
 

 
span { 
 
    text-decoration: underline; 
 
    color: #7fffd4; 
 
} 
 

 
.buttons { 
 
    padding-top: 10px; 
 
    text-align: center; 
 
    width: 480px; 
 
    margin: 0 auto; 
 
} 
 

 
#clear, 
 
#randomcolor, 
 
#usersquares { 
 
    margin: 5px; 
 
    padding: 8px; 
 
    border-radius: 1px; 
 
    background-color: #191919; 
 
    color: white; 
 
} 
 

 
.container { 
 
    margin-top: 20px; 
 
} 
 

 
#grid { 
 
    width: 484px; 
 
    height: 484px; 
 
    margin: 10px auto; 
 
    border: 2px solid #191919; 
 
    box-shadow: 2px 2px 30px 10px #b2b2b2; 
 
} 
 

 
.square { 
 
    width: 30px; 
 
    height: 30px; 
 
    margin: 0; 
 
    float: left; 
 
    outline: 1px solid black; 
 
    background: white; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"> 
 
</script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script> 
 

 
<h1>Etch A <span>Sketch</span></h1> 
 
<div class="buttons"> 
 
    <button id="clear">Clear Canvas</button> 
 
    <button id="randomcolor">Random Colors</button> 
 
    <button id="usersquares">Squares Per Side</button> 
 
</div> 
 
<div class="container"> 
 
    <div id="grid"></div> 
 
</div>

+0

попробовать этот класс '=«квадрат»' –

+1

Вы также отсутствует закрывающую скобку для вашего квадратного класса в CSS. –

+0

@ DaniloBustos извините за то, что он глуп, - где я могу добавить это? –

ответ

3

Значение this вычисляется, когда интерпретатор анализирует сценарий. Из-за этого значение в defaultcolor не является this, на которое вы ссылаетесь в событиях мыши.

Вместо этого вы могли бы сделать что-то вроде этого:

function set_default_color() { 
    $(this).css("background-color", "#7fffd4"); 
} 

$(".square").mouseenter(set_default_color); 
+0

за ваш ответ! поэтому даже добавление «.square» вместо «this» также не сработало бы? в вашем предложении - где бы я добавил эту функцию? за пределами документа, готового также или внутри документа, готового? –

+0

@nickyheise Я бы добавил его там, где у вас есть 'var defaultcolor ...'. Разница в том, что здесь мы используем метод, который динамически может изменять свою ссылочную переменную, а в вашем коде вы пытаетесь повторно использовать значение переменной, которая была оценена ранее. – OptimusCrime

+0

Я просто попытался добавить это, но он, похоже, не работает? i добавлено function set_default_color() { $ (this) .css ("background-color", "# 7fffd4"); } над документом готов, а затем $ (". Square"). Mouseenter (set_default_color); в тех местах, где у меня были функции, но когда я перезагрузил страницу, ни один цвет не покажет на травлении эскизную доску! –

Смежные вопросы