skrudjmakdak,
 а в чём, собственно, проблема? Всё же работает) Или нужен совет по улучшению кода?
Можно, например, в функции 
s выбирать что закрывать, а что нет, основываясь на классе/спец. атрибуте, а не содержимом.
Т.е. будет как-то так:
<div class="list" onclick="s(this, event)" style="display: none;">
  <div>111111</div>
  <div class="do-nothing">222222</div>
  <div>333333</div>
</div>
function s (ths, event) {
        var v = event.target.innerHTML;
        input.value = v;
        if (event.target.classList.contains('do-nothing'))
            return;
        ths.style.display = 'none';
        contextMenuList.length = 0;
    }
	
	| 
		
			 Цитата: 
		
	 | 
	| 
		window.document.onclick
	 | 
	
Не надо так) Можно короче
window.onclick
Ну и все эти глобальные переменные и функции сделать свойствами и методами одного объекта или заключить в анонимную функцию, чтобы не засоряли область видимости.