var mydata = [];
$.ajax({
  url: '3.php',
  async: false,
  dataType: 'json',
  success: function (json) {
    mydata = json.result;
    if ( mydata=="yes" )
    {
      $(document).ready(function(){
        notifyMe();
        setTimeout(notifyMe, 10000);
      });
    }
  }
});var rabbit = "Где кролик?";. Соответственно, в функции var rabbit писать не нужно, пишите rabbit.var rabbit = "Вот он, кролик";, переменная создалась в области видимости функции hat, а в коде why она не видна. Убираем var - переменной rabbit, которая видна функциям hat и why, присваивается "Вот он, кролик"var Turbo = {
  head : function(o) {
    // Подгрузка JS, CSS
    var count = 0;
    var scriptTag, linkTag, id;
    var scriptFiles = o.js || {};
    var cssFiles = o.css || {};
    var head = document.getElementsByTagName('head')[0];
    for ( var k in cssFiles) {
      // Парсим название CSS-файла
      // Достаем из него ID и если не нашли <link> с таким ID, создаем и присваиваем ID (избегаем повторной загрузки)
      id = Turbo._makeId(cssFiles[k]);
      if(!document.getElementById(id)) {
        // Создаем 
        linkTag = document.createElement('link');
        linkTag.type = 'text/css';
        linkTag.rel = 'stylesheet';
        linkTag.href = cssFiles[k];
        linkTag.id = id;
        head.appendChild(linkTag);
      }
    } 
    for ( var k in scriptFiles) {
      // Парсим название JS-файла
      // Достаем из него ID и если не нашли <script> с таким ID, создаем и присваиваем ID (избегаем повторной загрузки)
      id = Turbo._makeId(scriptFiles[k]);
      scriptTag  = document.getElementById(id);
      if(!scriptTag) {
        scriptTag = document.createElement('script');
        scriptTag.type = 'text/javascript';
        scriptTag.src = scriptFiles[k];
        scriptTag.id = id;
        head.appendChild(scriptTag);
        // Если есть callback, вызываем его при загрузке всех данных
        if (typeof o.callback == "function") {
          if (scriptTag.readyState) { //IE
            scriptTag.onreadystatechange = function() {
              if (scriptTag.readyState == "loaded"
                  || scriptTag.readyState == "complete") {
                count++;
                if (count == scriptFiles.length)
                  o.callback.call();
              }
            };
          } else { // other browsers
            scriptTag.onload = function() {
              count++;
              if (count == scriptFiles.length)
                o.callback.call();
            }
          }
        }
      } else {
        if (typeof o.callback == "function") {
          count++;
          if(count == scriptFiles.length) {
            o.callback.call();
          }
        }
      }
    }
  },
  _makeId : function(url) {
    // Парсим URL:
    // Убираем строку запроса (?) если она состоит из 10 цифр и заменяем все не алфавитно-цифровые символы на дефис.
    var parts = url.split('?');
    if( parts.length == 2 && /^([\d]{10})$/.exec(parts[1]) ) {
      url = parts[0];
    }
    return url.replace(/[^a-z0-9-_]/gi,'-').replace(/([-]{2,})/gi,'-');
  }
}Turbo.head({
  css: ["a.css", "b.css"], // массив CSS
  js: ["a.js", "b.js"], // массив JS
  callback: function() { // вызывается после загрузки всех JS или нет, если JS нет.
  }
});Всем привет, никто не видел нормальную рабочую библиотеку для преобразования html кода в bbcode?
ещё не подскажете как удалить из html кода все атрибуты?
html_code.replace(/<([^ ]+) .*>/g, "<$1>") - заменяет <[...] [***]> на <[...]> ([...] - тег, [***] - аттрибуты)нет ли библиотки которая преобразует html в текст с учетом отступов и прочего ?
window.onload = function() {
  // init chart
  initChart();
};
// VK app
VK.init({
  apiId: 5225204
});
function getMembers(gid, callback) {
  VK.Api.call('groups.getById', {group_id: gid, fields: 'members_count'}, function(data){
    if(data.response) {
      console.log('success');
      console.log(data.response[0].members_count);
      callback(data.response[0].members_count);
    } else {
      console.log('error');
    }
  });
}
// get groups members
getMembers('group1', function(gr1) {
  getMembers('group2', function(gr2) {
    getMembers('group3', function(gr3) {
      getMembers('group4', function(gr4) {
        // draw chart
        var chartData = [gr1, gr2, gr3, gr4];
      });
    });
  });
});// var chartData = [343, 123, 432, 963]; // test chart
var canvas, ctx;
function initChart() {
  canvas = document.getElementById('chart');
  ctx = canvas.getContext('2d');
  drawChart(80, 370);
}
function drawChart(x, y) {
  ctx.fillStyle='orangered';
  for (var i = 0; i < chartData.length; i++) {
    ctx.fillRect(x + i * 100, y, 60, chartData[i] / -10);
  }
}getMembers, начинается запрос к VK и возвращается undefined. После этого запрос выполняется, и вызывается ваша функция. Ее return уходит в никуда. Для этого вы должны переписать функцию, чтобы ей в параметре давался callback - функция, которая вызывается после выполнения. В моем коде вызывается getMembers(1) и сохраняется в gr1, потом getMembers(2) и т. д. Затем вызывается chartData = [gr1, gr2, gr3, gr4]. После этого пишете свой код.      var div = document.createElement("div");
div.style.transform = "";
div.style.transform = "fsdfh,jkdhgfwki4u932857943o"; // неверное значение
if(div.style.transform == "") {
  // свойство поддерживается
} else {
  // свойство не поддерживается
}canvas.onclick = function(e) {
  var ev = e || event; // берем событие
  var x = ev.clientX - canvas.getBoundingClientRect().left; // Можно это и не считать в Firefox, там есть ev.layerX и ev.layerY
  var y = ev.clientY - canvas.getBoundingClientRect().top;
  if(x > 100 && x < 200 &&
    y > 100 && y < 200) {
    // Выполнить действие для кнопки с X = 100, Y = 100, width = 100, height = 100
  }
}