Вопросы по JavaScript

34.3K
.
kantry
Hey guys! Finally I'm gonna change status!?

lazyproger, На вот лучше код покритикуй, в свете данного топика решил нативный яваскрипт изучить

Code (+/-)
<style type="text/css"> p>strong{ cursor: pointer;} </style>
<form action="" method="post">
    <div class="gmenu">
        <p>Цена (за 1 неделю):
        <p><input id="inp" type="text" name="cost" value="<?= $money ?>" size="15" />$
        <p>(Мин.&nbsp;<strong id="num-<?= number_format($min) ?>"><?= number_format($min) ?></strong>$/нед.
        Макс.&nbsp;<strong id="num-<?= number_format($max) ?>"><?= number_format($max) ?></strong>$/нед.)
        <p><input type="submit" name="submit" value="Арендовать" /></p>
        </div>
    </form>
<script type="text/javascript">
var inputs = document.getElementsByTagName('strong');
for (var i = 0; i < inputs.length; i++) {
  inputs[i].addEventListener('click', cost);
}
function cost() {
  document.getElementById('inp').value = this.id.replace(/[^\d;]/g, '');
}
</script>
.
brainhub

kantry, дома буду, закину замечания

.
# kantry (15.10.2017 / 15:53)
Hat-Trik, Если просто то как то так
<textarea id="click"></textarea>
<p><a style="color:black" href="#" onClick="document.getElementById('click').value = 'user1'">user1</a>
<p><a style="color:blac
ещё раз всем привет, вернёмся вот к этому, работа пошла дальше и теперь делается журнал ответов

значит кликаем мы по user1, в texterea у нас попадает user1 и мы пишем комментарий, но при этом теперь ещё требуется, что бы в скрытое поле hidden вводилось ID поста, на который мы отвечаем, как реализовать?
.
brainhub

Возьми мой ответ, чуть позже дополню. До компа не могу добраться

.
Let Mortal Kombat begin

Есть у меня блок с уведомлением, по нажатию на который этот блок закрывается и далее идёт переход к другому блоку id которого берется из адреса в истории браузера. Всё это реализовано при помощи js и работает замечательно, но!
Если мы отправляемся на страницу, там происходит действие и тут же идёт перенаправление через header('Location...'), то в историю такая страница не попадает и, соответственно я не могу взять данные из адреса.
Как можно решить данную проблему, есть идеи?
---
Пробовал без использования истории браузера в hash адреса передавать что-то типа #post=123,а потом парить, но что-то не вышло у меня. (Думаю это решение правильнее)
---
Можно конечно в адресе при переадресации прописать &post=123, но хотелось бы это сделать через hash.

.
Кадило крутится, лавэха мутится

seg0ro, Ну как-то так наверное можно.
Есть хэш "#test=1&test2=22"

var hash_array = location.hash.substring(1).split('&');
var test = [];
hash_array.map(function (param) {
    test[param.split('=')[0]] = param.split('=')[1]
    return test;
});
// В переменной test будет это:
// [test: "1", test2: "22"]

З.Ы. Возможно код можно получше написать))
.
Блиносвёрт ?

history.pushState может вызвать где-нить

.
seg0ro
Let Mortal Kombat begin

Короч, проще. У меня было header('Location: ...'), а я сделал header('Refresh: 0 URL=...') - страница записывается в историю, я из истории беру ID сообщения, профит!
если вдруг нужен быдлокод, то вот как я сделал.

function idChange(elem, jump) {
  var hash;  
  if (location.hash){
    hash = location.hash.split("#")[1];
  }
  if (elem)
    hash = elem;
  
  if (hash) {
    var wrapper = document.getElementsByClassName("wrapper");
    if (wrapper[0].id == hash)
      wrapper[0].id = "main";
    else
      wrapper[0].id = hash;
    history.replaceState({}, document.title, window.location.href.split("#")[0]);
  }
  
  if (jump) {
    const url = new URL(document.referrer);
    document.getElementById("p" + url.searchParams.get("post")).scrollIntoView({block: "start", inline: "nearest", behavior: "smooth"});
  }
}
.

Есть такой код подсчёта количества чекбоксов

var count = 0;
$(function() {
  count = $('input[class=count-checked-1]:checked').length;
  displayCount();

  $('input[class=count-checked-1]').bind('click', function(e, a) {
    if (this.checked) {
      count += a ? -1 : 1;
    } else {
      count += a ? 1 : -1;
    }
    displayCount();
  });
});

function displayCount() {
  $('#count').text(count);
}

Вывод
<div>
  Выбрано: <span id="count"></span>
</div>

Считает кол-во чекбоксов отмеченных с классом count-checked-1
У меня есть несколько рядов чекбоксов с классами count-checked-1  (-2 -3 -4 и т.д.)
Как для каждого ряда чекбоксов сделать подсчёт и вывод? А так же добавить кнопку "очистить". Чтобы очищались чекбоксы только этого ряда.
.
Кадило крутится, лавэха мутится

Сгруппируй чекбоксы по разным дивам с разными классами например и дальше уже по селектору можешь выбирать только чекбоксы в нужной строке.

Всего: 820