Многие другие ответы сосредоточены на шаблоне, который действительно работает, но их объяснения на самом деле не очень подробны относительно того, почему ваш текущий код не работает.
Ваш код для справки:
function funcName() {
alert("test");
}
var func = funcName();
var run = setInterval("func",10000)
Давайте разложим это на куски. Ваша функция funcName
прекрасна. Обратите внимание, что когда вы вызываете funcName
(другими словами, вы его запускаете), вы будете предупреждать "test"
. Но обратите внимание, что funcName()
- круглые скобки означают «вызов» или «запуск» функции - фактически не возвращает значение. Когда функция не имеет возвращаемого значения, по умолчанию она имеет значение, известное как undefined
.
Когда вы вызываете функцию, вы добавляете ее список аргументов в конец в круглых скобках. Когда у вас нет аргументов для передачи функции, вы просто добавляете пустые круглые скобки, например funcName()
. Но когда вы хотите обратиться к самой функции и не называть ее, вам не нужны скобки, потому что скобки указывают на ее запуск.
Итак, когда вы говорите:
var func = funcName();
Фактически вы объявляете переменную func
, которая имеет значение funcName()
. Но обратите внимание на круглые скобки. funcName()
на самом деле является возвращаемым значением funcName
. Как я сказал выше, поскольку funcName
фактически не возвращает никакого значения, по умолчанию он равен undefined
. Иными словами, ваша переменная func
будет иметь значение undefined
.
Тогда у вас есть эта строка:
var run = setInterval("func",10000)
Функция setInterval
принимает два аргумента. Первая - это функция, которая должна выполняться так часто, а вторая - количество миллисекунд между каждым запуском функции.
Однако первый аргумент действительно должен быть функцией, а не строкой. Если это строка, тогда механизм JavaScript будет использовать eval
для этой строки. Другими словами, ваш setInterval запускает следующий код JavaScript:
func
// 10 seconds later....
func
// and so on
Однако func
- это просто переменная (со значением undefined
, но это не имеет значения). Поэтому каждые десять секунд двигатель JS оценивает переменную func
и возвращает undefined
. Но это на самом деле ничего не делает. Я имею в виду, что это технически оценивается каждые 10 секунд, но вы не увидите никаких эффектов от этого.
Решение состоит в том, чтобы дать setInterval
функцию для запуска вместо строки. Итак, в этом случае:
var run = setInterval(funcName, 10000);
Обратите внимание, что я не дал func
. Это связано с тем, что func
не является функцией вашего кода; это значение undefined
, потому что вы назначили его funcName()
. Как я уже сказал выше, funcName()
вызовет функцию funcName
и вернет возвращаемое значение функции. Поскольку funcName
ничего не возвращает, по умолчанию используется значение undefined
. Я знаю, что уже говорил об этом несколько раз, но это очень важная концепция: когда вы видите funcName()
, вы должны думать «возвращаемое значение funcName
». Если вы хотите обратиться к самой функции , как отдельному объекту, вы должны оставить круглые скобки, чтобы не называть его: funcName
.
Итак, еще один решение для вашего кода было бы:
var func = funcName;
var run = setInterval(func, 10000);
Однако это немного избыточно: зачем использовать func
вместо funcName
?
Или вы можете оставаться как можно вернее исходного кода, изменив два бита:
var func = funcName;
var run = setInterval("func()", 10000);
В этом случае движок JS будет оценивать func()
каждые десять секунд. Другими словами, он будет предупреждать "test"
каждые десять секунд. Однако, поскольку знаменитая фраза идет, eval
является злой , поэтому вы должны стараться избегать ее, когда это возможно.
Еще один поворот в этом коде - использование анонимной функции. Другими словами, функция, которая не имеет имени - вы просто бросаете ее в код, потому что вам все равно, что она называется.
setInterval(function () {
alert("test");
}, 10000);
В этом случае, не заботьтесь о том, что называется функцией, я просто оставляю там общую, неназванную (анонимную) функцию.
I would recommend to use external software: http://www.colorschemer.com/online.html You can integrate it into Eclipse.
There are a few plugins at the Eclipse plugins site that might meet your needs.
CSS Designer looks promising:
JointLogic CSS Designer is an Eclipse plugin that provides CSS authoring facilities like - CSS Styles view, CSS declaration designer with preview and web-oriented color picker. It integrates with Eclipse Web Tools Platform (WTP) to allow CSS authoring while editing CSS and HTML files.
Here's a screesnhot from the homepage:
Я использовал этот плагин, называемый цветами, в Galymeade, и я только что зашел в Galileo. http://www.eclipseplugincentral.com/Web_Links-index-req-viewlink-cid-1281.html вы можете скопировать цветовой код в / из буфера обмена или редактора. Ползунок для раскраски, выбора цвета и т. Д. Я использовал его для редактирования файлов css в недавнем проекте. Удачи.