Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как не передавать одно и тоже в res.render()?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Насколько помню кэш в express есть.. самому его проверять не приходилось на работоспособность=)..

    app.enable('view cache');

    view cache Enables view template compilation caching, enabled in production by default
    Ответ написан
    Комментировать
  • Как получить полный путь до значения в объекте JavaScript?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    И на массивах =)
    var obj = {
        MainService: [
            {
                Id: "733",
                Name: "service",
                MainService: [
                    {
                        Id: "238",
                        Name: "service 1",
                        Service: [
                            {
                                Id: "145",
                                Name: "Service 2"
                            }
                        ]
                    }
                ]
            }
        ]
      };  
    
           function mapObject(obj,asArrays){
               var paths=[];
    
               function scan(obj,stack){
                   var k, v, path;
    
                   for(k in obj){
                       if(obj.hasOwnProperty(k)){
                           path=stack.concat([k]);
                           if((v=obj[k])!==null&&typeof v=='object'){
                               scan(v,path);
                           }else{
                               paths.push(asArrays?path:path.join('.'));
                           }
                       }
                   }
               }
               scan(obj,[]);
               return paths;
           }
    
           console.warn(mapObject(obj));
    
           console.warn(mapObject(obj,true)); //вдруг где пригодиться ;)
    Ответ написан
  • Можно ли создать массив ссылок на элемены?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Так объекты же в JS и так по ссылке передаются.

    var arr1=[{x:1},{y:2}],
               arr2=[];
    
           arr2.push(arr1[0]);
           arr2.push(arr1[1]);
    
           arr2[0].x=5;
    
           console.log(arr1[0].x);


    Или я Вас не понял?
    Ответ написан
  • Как сделать, чтобы при переходе по ссылке открывалось определенное положение страницы?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    можно:
    - использовать native механизмы якорей
    - использовать якори для передачи координат или селектора на страницу с последующим разбором скриптом и прокруткой
    - кукистные костыли

    выберем второй:
    Скрипт может парсить переменный x/y или scrollTo=selector и прокручивает страницу

    также позволяет делать тоже самое в пределах одной страницы, и как бонус парсит переменные с hash

    <a href="#x=123&y=100">Scroll to  x/y</a>
         <a href="#scrollTo=#scrollID">ScrollTo element selector (id)</a>
         <a href="#scrollTo=.class">ScrollTo element selector (class)</a>
        <a href="path/to/page.php#scrollTo=.class">ScrollTo element selector (class)</a>


    function decodeScrollPos(hide) {
                 var params = {}, el, loc = window.location, hash = loc.hash.substr(1);
    
                 hide && (loc.hash = "");
    
                 hash.split('&').forEach(function (raw) {
                     var data = raw.split('=');
                     data[0] && (params[data[0]] = data[1] || "");
                 })
                 setTimeout(function () {
                     if (params.x || params.y) {
                         console.log('scroll=', hash);
                         window.scrollTo(params.x, params.y);
                     } else if (params.scrollTo) {
                         (el = document.querySelector(params.scrollTo)) && el.scrollIntoView && el.scrollIntoView(true);
                     }
                 }, 100);
                 return params;
             }
    
    
             window.onhashchange = function () {
                 decodeScrollPos(true);
             }
    
             console.log(decodeScrollPos(true));


    Если хотите не показывать hash в адресе после перехода после скроллинга можно его обнулить ..но зачем
    window.location.hash="";
    Ответ написан
    7 комментариев
  • Генератор полей формы на JS. Как улучшить?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    Как улучшить? Поизвращаемся...

    <div id="fields">Контейнер полей</div>
    
         <a onclick="fields.add('input');">Add</a>
         <a onclick="fields.remove();">Remove</a>

    var FieldSet=function(container,tagID){
                 this.fields=[];
                 this.container=(typeof container=='object')?container:document.getElementById(container);
                 var id=0;
    
                 this.add=function(type){
                     var template={input:'TextField Name : <input type = "text" name="txt_field"> -> your text field has been generated just define name',
                                 textarea:'',
                                 table_name:''}[type],
                             wrapper=document.createElement("div");
    
                     wrapper.innerHTML=template;
                     tagID&&wrapper.setAttribute("id",tagID+(id++));//можно выбросить если не надо id для полей
                     this.container.appendChild(wrapper);
                     this.fields.push(wrapper);
                     return wrapper;
                 }
    
                 this.remove=function(index){
                     this.container.removeChild(this.fields.pop());
                 }
             }
    
             var fields=new FieldSet("fields");//id или элемент контейнера для коллекции полей
    Ответ написан
    Комментировать
  • Как изменить цвет определенной буквы при вводе?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    ИМХО тут будет проблема не в добавке тега с цветом, а в сдвиге каретки при вводе из за изменение контента. Компактного решения я не вижу. С document.getSelection походу практически та же проблема будет.

    Обернуть текст в span с цветом можно любым быдлокодингом типа:
    function wrapText(str, index, count, color){
                   return [
                       str.substr(0,index),
                       '<span style="color:',
                       color,
                       '">',
                       str.substr(index,count),
                       '</span>',
                       str.substr(index+count)
                   ].join("");
             }
    
            document.querySelector('div').addEventListener('input', function() {
                 var s=this.innerText;
                 this.innerHTML=wrapText(s, s.length-1,1,"red");
            }


    Но это ничего не решает в случае с редактируемым контентом ...
    Ответ написан
    Комментировать