Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: почему нельзя указывать скобки в функции setTimeout()

допустим у меня есть код:
function ups(){
        alert("ups");
    }
    setTimeout(ups,5000)

если я напишу так : setTimeout(ups(),5000) - тогда функция сразу сработает, но если напишу так: setTimeout(ups,5000), то тогда она срабатывает из задержкой(как и должно быть)
Вопрос:
почему нельзя указывать СКОБКИ ФУНКЦИИ для функции setTimeout, не могу понять этот момент, друзья, подскажите пожалуйста!)
Ответ: ksa,
спасибо, буду пользоваться)
Вопрос: Как узнать width и height без вставки в DOM

Здравствуйте. При решении одной из задачек с анимациями столкнулся проблемой. До вставки элемента в дерево документа или при установленном значении display:none есть ли способ узнать высоту и ширину элемента, если они явно не указаны в CSS(то есть в computed отсутствуют)?
Ответ:
Сообщение от xShift
До вставки элемента в дерево документа или при установленном значении display:none есть ли способ узнать высоту и ширину элемента, если они явно не указаны
Нет.
Вопрос: Почему нельзя заменить значение

CSS
1
2
3
4
5
6
 h1 { 
   color:#A83001; 
   font-size:36px;     
   border-bottom:1px solid #741D00;
   margin-bottom: 10px;
   text-align:center;
вопрос таков, почему вместо " text-align:center; " нельзя написать (не работает) " margin:0 auto; " ?????
Ответ:
Сообщение от KOPOJI
что-то мне подсказывает, что ТС-у надо это
Работать это не будет... ТС-у скорее надо понять разницу между блочными и строчными элементами...
Вопрос: Непонятное выталкиванием элемента

Почему происходит выталкивание второго элемента когда общая ширина обеих элементов составляет 100%?
HTML5
1
2
3
4
5
6
 <body>
    <div class="media">
    <p></p>
    <div class="phot"></div>
    </div>
 </body>
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
*{
    box-sizing:border-box;
    margin:0;
    padding:0;
}
.media{
    width:937px;
    height:1000px;
    border: 4px solid #FBFBFB;
}
.media p{
    width:45%;
    height:100%;
    background:black;
    display:inline-block;
}
.phot{
    width:55%;
    height:100%;
background:red; 
display:inline-block;
}
Ответ:
Сообщение от Aqua77
Почему происходит выталкивание второго элемента когда общая ширина обеих элементов составляет 100%?
Потому-что оба элемента строчно-блочные, а между строчно-блочными элементами образуются отступы, как между обычными текстовыми символами... Обнуление стилей и указание свойства box-sizing:border-box не поможет... Если задать родительскому элементу(.media) font-size:0 влезут оба элемента...
Вопрос: почему iframe считается кроссбраузерным способом передачи параметров без перезагрузки

2 дня пытался понять, как с помощью Iframe передавать параметры на сервер, написал такой код:
<script>
function send(params, action){
	var ifr = document.createElement('iframe');
	var targ = 'i'+parseInt(Math.random()*100);
	ifr.name = targ;
	ifr.src = action;
	ifr.style.display='none';
	document.body.appendChild(ifr);
	
	var form = document.createElement('form');
	form.method = 'post';
	form.action = action;
	form.target = targ;
	
	for(var key in params){
		var inp = document.createElement('input');
		inp.type='hidden';
		inp.name = key;
		inp.value = params[key];
		form.appendChild(inp);
	}
	document.body.appendChild(form);
	
	form.submit();
}
send({parametr: "test"}, 'http://127.0.0.1:8080');
</script>

Проверял я этот код на node.js
var http = require('http');
var url = require('url');

var server = new http.Server(function(req, res){
	console.log(req.method, req.url);
	
	var urlParsed = url.parse(req.url);
	console.log(urlParsed.query);
	res.end;
});

server.listen(8080, '127.0.0.1')


А потом ради любопытства я просто начал вставлять любые элементы, у которых есть атрибут src и так же в консоле ловил параметры, так почему нужно использовать iframe? Может я что-то неправильно делаю?
function send(){
	var image = document.createElement('img');
	image.src="http://127.0.0.1:8080?vasya=2";
	document.body.appenChild(image);
}
Ответ:
Сообщение от innowed
т.е. мой код и есть jsonp
скорее загрузчик (понятно что так параметры можно передавать)
но без обработки входящих данных это обычны подзарузчик контента, который сохраняется в кеше для дальнейшего использования
loadBefore: function (href) {
            if (navigator.appName.indexOf("Microsoft") !== -1) {
                (new Image()).src = href;
            } else {
                var obj = doc.createElement("object");
                obj.width = 0;
                obj.height = 0;
                obj.data = href;
                doc.body.appendChild(obj);
            }
        },
Вопрос: appendChild не добавляет тот же элемент повторно

Я частенько прохожу Тест знаний и мне непонятно вот это задание:

Сколько потомков будет у <div> после кода ниже?
<div id="div"></div>
<p id="p">Привет</p>
<script>
  div.appendChild(p);
  div.appendChild(p);
</script>


Варианты ответов:
0
1
2
В коде ошибка.


Правильный ответ 1. И действительно хром не добавляет тот же самый элемент повторно. Почему так?
Ответ:
Сообщение от EmperioAf
по-моему логично, что если мы хотим добавить N абсолютно одинаковых элементов, то можно добавлять их по одному в цикле.
Весь вопрос только в том, что это за элементы такие?
В твоем случае это один и тот же элемент.

Вот если бы ты его клонировал... Или создавал каждый раз новый элемент...
Вопрос: Есть вопрос по parentElem.appendChild(elem)

Итак, есть вот такой код:

Создаю новый элемент и добавляю в него содержимое:

var newSpan = document.createElement('span');
newSpan.innerHTML = '[ открыть ]';

Собираю все нужные мне элементы:
var elem = document.getElementsByClassName('heading');

перебираю их и добавляю новый элемент в в конец дочерних элементов
elem[i].appendChild(newSpan);

Результат Вы видите!
"открыть" появляется почему-то в последнем элементе, хотя console.log показывает совсем другое. Что я делаю не правильно???

Спасибо!
Ответ: Dilettante_Pro, мы доминируем.
Вопрос: AppendChild при каждой иттерации заменять добавленыый тег

var area = document.querySelector('#posts');

for (var i = 1; i <= localStorage.length; i++) {
      var articleTemplate = document.querySelector('#post').innerHTML;
      var article = document.createElement('article');

      articleTemplate = articleTemplate.replace('{{title}}', JSON.parse(localStorage.getItem('object' + [i])).title);
      articleTemplate = articleTemplate.replace('{{body}}', JSON.parse(localStorage.getItem('object' + [i])).body);
      
      var tags = JSON.parse(localStorage.getItem('object' + [i])).tags;

      var tagButton = document.createElement('button');
      tagButton.className = 'btn btn-xs btn-default';

      // создаем разметку
      article.setAttribute('id', [i]);
      article.innerHTML = articleTemplate;
      area.appendChild(article);

      var tagContainer = article.querySelector('.tags');

      for (var j = 0; j < tags.length; j++) {
        tagButton.textContent = tags[j];
        tagContainer.appendChild(tagButton);
      }
      
    }


мы создаем разметку выводим ее на страницу, потом в это разметке находим обертку и создаем перемнную tagContainer и я хочу в эту обертку запихать несколько кнопок с тегами. На каждой иттерации цикла 'j' кнопка заменяет предыдущую, почему так происходит и как исправить?
Ответ:
Сообщение от Jucamba
Афигеть все работает, Спасибо! но я нифига не понял почему))) можешь дать больше инфы, объяснить или скинуть полезную ссылку?
Вопрос: Сделать элементы списка одной высоты в пределах каждой строки

Добрый день!
Есть такая страница

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
		<style type="text/css">
			body{font-size:16px}
			#wrap{max-width:400px;text-align:center;border:2px solid red}
			.list li{display:inline-block;vertical-align:bottom;width:100px;text-align:left;}
			.list li a{display:block;margin:5px;border:1px solid green}
		</style>
	</head>
	<body>
		<div id="wrap">
		`	<ul class="list">
				<li><a href="#">111111 111111 1 1 1 1</a></li>
				<li><a href="#">22 2222 2 2 2</a></li>
				<li><a href="#">333 3 3 3 3 33 3 3 33333 3 3 3 3 3 3 3 3 3</a></li>
				<li><a href="#">4444444444 4444444 444 4 4 4444444444 4 44 4 4 44</a></li>
				<li><a href="#">5555 555</a></li>
				<li><a href="#">66 6666  6666  6 6 6 666 66 66 6 6 6 6  6 6 66666 66666 666 6</a></li>
				<li><a href="#">7777 7777777 7777 777777 777</a></li>
			</ul>
		</div>
	</body>
</html>


По условию на странице нельзя использовать таблицы html, display:table, и float (это важно!).

Как кроссбраузерно (IE6 и 7 не нужны) с помощью чистого JS или Jquery (Jquery предпочтительней, тк библиотека подключена) сделать так, чтобы высота элементов списка подгонялась под высоту самого высоко в строке?

Я знаю, как сделать все элементы списка одной высоты, выровняв их по самому высокому в списке. Но мне надо, чтобы это работало отдельно для каждой строки. Количество строк может быть любым, ширина #wrap тоже любым, как и количество элементов в строке. Например, в данном примере, при увеличении масштаба страницы, #wrap начнет сужаться, а количество элементов в строке уменьшится с 3 до 2. Соответственно после этого и самый высокий элемент в строке может смениться.

Друзья, заранее спасибо!
Ответ:
Сообщение от eddin
[b]Там еще почему-то весь контент внутри LI прижался кверху, игнорируя CSS.
А всё, понял, никакого игнорирования стилей нет.
Вопрос: Jquery. gif в созданном элементе img замирает

Везде gif картинка анимирует, а именно в созданном элементе с пошью jquery картинка показывается, но в неподвижном состоянии почему ?

Создаю элемент вот так.
Javascript
1
$('#Picture').html('<img src="../Avatar/3.gif">');
Ответ: 1) Сама картинка gif анимирует тобиш вращается.
2) (Jquery. gif в созданном элементе img замирает) я ошибся, картинка замирает пока браузер грузится
3) Самое интересное мне как раз то и нужно чтобы картинка gif вращалась пока браузер грузится

Добавлено через 10 минут
Видимо gif кешируется и после кеширования мы будем видеть уже не анимированное изображение, а его последний кадр.
Как быть ?

Добавлено через 1 час 6 минут
всё разобрался это не лечится (