Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2018, 11:32
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

Создание говнокода
Подскажите пожалуйста как передать атрибут data грамотно
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<div class="cont">
<div id="text">Текст</div><button id="button" data="445563">Кнопка</button><div id="numeral">123</div>
</div>
<script>
$("#button").click(function(){
        var data1 = $(this).prev().text();
        var data2 = $(this).next().text();
        var data = $(this).attr('data');
        console.log(data);
        alert(data1+data2);
});
</script>


Нужно передать атрибут data но чтоб пользователь его не видел.
Предполагается передать его, потом что то сделать с модальным окном(например ввести туда текст) и уже сказать - вставить этот текст в объект с таким data.
А гавнокод мой заключался в:
$("#button").click(function(){
        var data1 = $(this).prev().text();
        var data2 = $(this).next().text();
        var data = $(this).attr('data');
        govnocod (data);
});

function govnocod (data){
       alert(data1+data2);
       $(...).click(function(){
                 // по нажатию на кнопку в модальном окне передаем data и что ввели
       });

}


Но с такой функцией он запомнит data только один раз без перезагрузки страницы.
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2018, 12:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Artur_Hopf,
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2018, 15:12
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

рони,

Постараюсь объяснить вопрос. Есть кнопка (одна из множества). У нее есть атрибут - идентификатор data="1334" (у всех кнопок он разный).
Жмем на кнопку, открывается окошко. Я поработал с этим окном, написал там что то( написал слово "Test"), жму ок. И мне нужно чтобы то что я написал, привязалась к этому артибуту, а точнее передалось в массив в виде:

array = {1334:'Test'};

Вот для наглядности написал как я сделал только без модального окна :
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<div class="cont">
<div id="text">Текст</div><button id="button" data="445563">Кнопка</button><div id="numeral">123</div>
</div>
<div class="cont_2" hidden="true">
    <div id="name"></div>
    <textarea name="txtComment"></textarea>
    <button id="ok">Ок</button>
</div>
<script>
$("#button").click(function(){
        var data1 = $(this).prev().text();
        var data2 = $(this).next().text();
        var data = $(this).attr('data');
        $('.cont_2').find('#name').html('Название: '+ data1 +'<br>'+ 'номер:' + data2 );
        $('.cont_2').prop('hidden', false);
});
$("#ok").click(function(){
      var comment = $('textarea[name=txtComment]');
      alert(comment.val());
});
</script>


Вот чтоб по нажатию на кнопку "ОК" выходило и что введено, и атрибут data кнопки "Кнопка". Вот что я хотел спросить изначально
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2018, 15:18
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

<button id="button" data-options='{"foo": "bar"}'>BUTTON</button>

<script>
button.onclick = function() {
    var options = JSON.parse(button.dataset.options);

    options[1334] = 'test';
    options.now = Date.now();
    options.randomNumber = Math.random();

    button.dataset.options = JSON.stringify(options);

    console.log(button);
};
</script>
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2018, 15:27
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

ruslan_mart,

если кнопок много, тоже получится?

<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<div class="cont">
<div id="text">Текст</div><button class="button" data="44455563">Кнопка</button><div id="numeral">123</div>
</div>
<div id="text">Другой</div><button class="button" data="468463">Кнопка</button><div id="numeral">143</div>
</div>
<div id="text">Вот этот</div><button class="button" data="4434445563">Кнопка</button><div id="numeral">133</div>
</div>
<div id="text">Этот тоже</div><button class="button" data="423463">Кнопка</button><div id="numeral">223</div>
</div>
<div class="cont_2" hidden="true">
    <div id="name"></div>
    <textarea name="txtComment"></textarea>
    <button id="ok">Ок</button>
</div>
<script>
$(".button").click(function(){
        var data1 = $(this).prev().text();
        var data2 = $(this).next().text();
        var data = $(this).attr('data');
        $('.cont_2').find('#name').html('Название: '+ data1 +'<br>'+ 'номер:' + data2 );
        $('.cont_2').prop('hidden', false);
});
$("#ok").click(function(){
      var comment = $('textarea[name=txtComment]');
      alert(comment.val());
});
</script>


Чтобы изменение вернулось именно на ту кнопку которая нажата была
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2018, 16:09
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

рони,
ruslan_mart,
Всем спасибо, говнокод заработал
Ответить с цитированием
  #7 (permalink)  
Старый 04.06.2018, 16:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Artur_Hopf,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .cont_2{
      display: none;
  }

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
var arr = [], text = "", info = [], add;
$(".cont button").click(function(){
        var data1 = $(this).prev().text();
        var data2 = $(this).next().text();
        var data = $(this).data('num');
        info = [data, data1, data2];
        $('.cont_2').show();
        infoShow()
});

$(".cont_2 textarea").on("input", function() {
      text = this.value;
      infoShow()
})

function infoShow()
{
   add = textCreate();
   var html = arr.map(JSON.stringify).join('<br>') + '<br>' +JSON.stringify(add) ;
   $('.cont_2 #show').html(html)
}

function textCreate()
{
   var obj = {}, num = info[0], txt = 'Название: '+ info[1] +'<br>'+ 'номер:' + info[2] + '<br>' + text;
   obj[num] = txt;
   return obj
}


$("#ok").click(function(){
      if(add) {
         arr.push(add);
         add = null;
         text = "";
         $(".cont_2 textarea").val("")
      } ;

      $('.cont_2').hide();
});
});
$(function() {
    var arr = [],
        text = "",
        info = [],
        add;
    $(".cont button").click(function() {
        var data1 = $(this).prev().text();
        var data2 = $(this).next().text();
        var data = $(this).data("num");
        info = [data, data1, data2];
        $(".cont_2").show();
        infoShow()
    });
    $(".cont_2 textarea").on("input", function() {
        text = this.value;
        infoShow()
    });

    function infoShow() {
        add = textCreate();
        var html = arr.map(JSON.stringify).join("<br>") + "<br>" + JSON.stringify(add);
        $(".cont_2 #show").html(html)
    }

    function textCreate() {
        var obj = {},
            num = info[0],
            txt = "Название: " +
            info[1] + "<br>" + "номер:" + info[2] + "<br>" + text;
        obj[num] = txt;
        return obj
    }
    $("#ok").click(function() {
        if (add) {
            arr.push(add);
            add = null;
            text = "";
            $(".cont_2 textarea").val("")
        }
        $(".cont_2").hide()
    })
});
 </script>
</head>

<body>

<div class="cont">
<div>Текст</div><button data-num="445563">Кнопка</button><div>123</div>
<div class="cont">
<div>go</div><button data-num="123">Кнопка</button><div>0000</div>
</div></div>

<div class="cont_2" hidden="true">
    <div id="show"></div>
    <textarea name="txtComment"></textarea>
    <button id="ok">Ок</button>
</div>

</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 04.06.2018, 16:43
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 278

рони,
Спасибо, очень сильно помогаешь
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание, продвижение и оптимизация сайта Evgenij83 Работа 0 10.06.2017 17:23
Создание JS конструктора sheckler Работа 2 25.05.2015 21:24
Создание Конструктора sheckler Элементы интерфейса 1 25.05.2015 12:02
Создание своей библиотеки. Создание двух одинаковых объектов. Как избежать? IDCh Javascript под браузер 2 31.10.2012 12:53
Создание скрипта! Создание диктанта для учеников! Елизавета Работа 10 30.06.2010 21:00