Bitcoin Forum
May 04, 2024, 11:19:02 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Требуется помощь js  (Read 477 times)
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 16, 2018, 01:44:42 PM
 #1

День добрый. Додумываю одну идею.
Есть страница http://wall.0xbt.net/ball2.html

Как сделать, чтобы любой пользователь мог самостоятельно ввести данные контракта

В строке 70 кода страницы надо поменять адрес 0xae4243e2c0f910223323dd2f2fdd16820b69f1d6
на свой, допустим на адрес 0x41835eba2075d2452fbedeec25bedbbc61d9b8a1
Code:
myContractInstance = MyContract.at("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6");

В js не силен.

А так же и заменять в url 0xae4243e2c0f910223323dd2f2fdd16820b69f1d6
на свой, допустим на 0x41835eba2075d2452fbedeec25bedbbc61d9b8a1
В строке 31 кода страницы:
Code:
<button class="knopka" id='btn_5'><a href="https://rinkeby.etherscan.io/writecontract/index.html?
a=0xae4243e2c0f910223323dd2f2fdd16820b69f1d6&n=rinkeby" title="section - '4. setPost'"
target="_blank"><b>

Что-то я не соображу.
Есть ли такая возможность?

Просьба к модератерам - пока не удалять вопрос.

1714864742
Hero Member
*
Offline Offline

Posts: 1714864742

View Profile Personal Message (Offline)

Ignore
1714864742
Reply with quote  #2

1714864742
Report to moderator
1714864742
Hero Member
*
Offline Offline

Posts: 1714864742

View Profile Personal Message (Offline)

Ignore
1714864742
Reply with quote  #2

1714864742
Report to moderator
1714864742
Hero Member
*
Offline Offline

Posts: 1714864742

View Profile Personal Message (Offline)

Ignore
1714864742
Reply with quote  #2

1714864742
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714864742
Hero Member
*
Offline Offline

Posts: 1714864742

View Profile Personal Message (Offline)

Ignore
1714864742
Reply with quote  #2

1714864742
Report to moderator
1714864742
Hero Member
*
Offline Offline

Posts: 1714864742

View Profile Personal Message (Offline)

Ignore
1714864742
Reply with quote  #2

1714864742
Report to moderator
1714864742
Hero Member
*
Offline Offline

Posts: 1714864742

View Profile Personal Message (Offline)

Ignore
1714864742
Reply with quote  #2

1714864742
Report to moderator
Schwarzenberg
Member
**
Offline Offline

Activity: 193
Merit: 47


View Profile WWW
November 17, 2018, 11:14:09 AM
Merited by bomj (2)
 #2

bomj, конечно возможность есть. Делается все через getElementById. Чтобы долго не объяснять - ловите готовый код прямо на основе Вашей страницы. Сложного там ничего нет, должны разобраться. Может, и другим пригодится.
В первом поле общий простой пример, как в JS отловить введенное значение из поля и что-то с ним сделать (в примере выведено алертом).
Во втором поле - пример, который реально меняет адрес в Вашем коде на введенное в поле значение и дальше можете спокойно нажимать свою серую кнопку "Send & News". Пример на коленке, без сохранения в переменную, но использовать уже можно Smiley Удачи!

❇️ ❇️ ✳️ ✴️ ➡️ BINAPEX CRYPTOCURRENCY  EXCHANGE ⬅️ ✴️ ✳️ ❇️ ❇️
📈 Fast | 🛡️ Secure | 📊 Margin Trading ▫️◽◻️⚪◻️◽▫️ $50 Upon Registration▫️◽◻️⚪◻️◽▫️ 🌏 Tokens Listing | 💬 Simple | 🔐 Safe
📑 📄 📉 https://binapex.com 📈 📄 📃
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 17, 2018, 05:33:01 PM
 #3

bomj, конечно возможность есть. Делается все через getElementById. Чтобы долго не объяснять - ловите готовый код прямо на основе Вашей страницы. Сложного там ничего нет, должны разобраться. Может, и другим пригодится.
В первом поле общий простой пример, как в JS отловить введенное значение из поля и что-то с ним сделать (в примере выведено алертом).
Во втором поле - пример, который реально меняет адрес в Вашем коде на введенное в поле значение и дальше можете спокойно нажимать свою серую кнопку "Send & News". Пример на коленке, без сохранения в переменную, но использовать уже можно Smiley Удачи!
Большое спасибо за ваш "Пример на коленке".
Буду признателен если бы и по строке 70 кода подсказали, чтобы я сарай не городил.
Code:
myContractInstance = MyContract.at("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6");

Coin-1
Legendary
*
Offline Offline

Activity: 2436
Merit: 2174



View Profile
November 17, 2018, 06:00:46 PM
 #4

bomj, конечно возможность есть. Делается все через getElementById. Чтобы долго не объяснять - ловите готовый код прямо на основе Вашей страницы. Сложного там ничего нет, должны разобраться. Может, и другим пригодится.
В первом поле общий простой пример, как в JS отловить введенное значение из поля и что-то с ним сделать (в примере выведено алертом).
Во втором поле - пример, который реально меняет адрес в Вашем коде на введенное в поле значение и дальше можете спокойно нажимать свою серую кнопку "Send & News". Пример на коленке, без сохранения в переменную, но использовать уже можно Smiley Удачи!
Большое спасибо за ваш "Пример на коленке".
Буду признателен если бы и по строке 70 кода подсказали, чтобы я сарай не городил.
Code:
myContractInstance = MyContract.at("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6");

1) Отредактируйте 70-ю строку примерно так:
Code:
myContractInstance = MyContract.at(document.getElementById("contract_instance").value);


2) Добавьте новую строку после 30-й строки:
Code:
Введите контракт: <input type="text" id="contract_instance" />


Должно работать.
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 17, 2018, 06:41:06 PM
 #5

......
Должно работать.
Большое спасибо, обдумаю завтра, голова уже не хочет варить.
Меритов к сожалению пока больше нет, но в любом случае буду должен.
Понимаю, что надо изучать js, но по ходу староват для этого, да и времени не хватает.
Что бы вы поняли суть происходящего почитайте:  https://acdc.0xbt.net/index.php?topic=11.0
я там изложил суть задумки.
Если прочитаете, то будет понятно, что меняя на подобной странице контрактн. адрес
можно будет переходить своего рода на индивидуальные каналы общения.

Schwarzenberg
Member
**
Offline Offline

Activity: 193
Merit: 47


View Profile WWW
November 17, 2018, 06:52:26 PM
 #6

bomj, конечно возможность есть. Делается все через getElementById. Чтобы долго не объяснять - ловите готовый код прямо на основе Вашей страницы. Сложного там ничего нет, должны разобраться. Может, и другим пригодится.
В первом поле общий простой пример, как в JS отловить введенное значение из поля и что-то с ним сделать (в примере выведено алертом).
Во втором поле - пример, который реально меняет адрес в Вашем коде на введенное в поле значение и дальше можете спокойно нажимать свою серую кнопку "Send & News". Пример на коленке, без сохранения в переменную, но использовать уже можно Smiley Удачи!
Большое спасибо за ваш "Пример на коленке".
Буду признателен если бы и по строке 70 кода подсказали, чтобы я сарай не городил.
Code:
myContractInstance = MyContract.at("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6");

Корректнее я бы сделал так:
поменяйте строчку

Quote
myContractInstance = MyContract.at("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6");

на

Quote
myContractInstance = MyContract.at(document.getElementById("txt_addr2").value);

Это будет менять значение myContractInstance на значение, введенное ранее в поле с id="txt_addr2".
Разумеется, оставив код из "примера на коленке" -)

❇️ ❇️ ✳️ ✴️ ➡️ BINAPEX CRYPTOCURRENCY  EXCHANGE ⬅️ ✴️ ✳️ ❇️ ❇️
📈 Fast | 🛡️ Secure | 📊 Margin Trading ▫️◽◻️⚪◻️◽▫️ $50 Upon Registration▫️◽◻️⚪◻️◽▫️ 🌏 Tokens Listing | 💬 Simple | 🔐 Safe
📑 📄 📉 https://binapex.com 📈 📄 📃
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 18, 2018, 12:30:03 PM
 #7

Schwarzenberg, Coin-1
Прошу прощения за свою тупость, но что-то не получается.

Поэкспериментировал, при запросе выдает ошибку:
Code:
[ getPost method Response ]
  string :  Error: invalid argument 0: hex string has length 0
  want 40 for common.Address

Выложил страницу с изменениями:
https://wall.0xbt.net/ball3.html

Что-то я делаю неправильно.......(

Schwarzenberg
Member
**
Offline Offline

Activity: 193
Merit: 47


View Profile WWW
November 18, 2018, 03:12:07 PM
Merited by chimk (4)
 #8

bomj, js в плане программирования ничем особо не отличается от других языков. Большинство несложных вещей можно понять даже интуитивно).
В Вашем примере (не копал глубоко, то, что сразу видно навскидку) - при вызове функции ethcall2 на строке 85 вторым параметром после метода 'getPost' идет передаваемый параметр 'input_5'. Не знаю логики Вашей программы, но предполагаю, что этот параметр должен содержать значение, передаваемое функции ethcall2. В коде страницы 'input_5' больше нигде не встречается, поля или переменной с таким названием нет. Соответственно, при выполнении код у Вас ругается на неправильный аргумент с нулевой длиной. Не знаю, что должно передаваться в функцию ethcall2 - смотрите там, откуда брали кусок кода, скорее всего, еще какой-то инпут должен быть. Может, адрес - попробуйте заменить 'input_5' на 'txt_addr2'. Но это уже не программирование, а гадание на гуще) Вот третий параметр для ethcall2 'myanswer_5' присутствует на странице и в него приходит ответ- правда, отсутствует 'ajax-loader2.gif' для него.

❇️ ❇️ ✳️ ✴️ ➡️ BINAPEX CRYPTOCURRENCY  EXCHANGE ⬅️ ✴️ ✳️ ❇️ ❇️
📈 Fast | 🛡️ Secure | 📊 Margin Trading ▫️◽◻️⚪◻️◽▫️ $50 Upon Registration▫️◽◻️⚪◻️◽▫️ 🌏 Tokens Listing | 💬 Simple | 🔐 Safe
📑 📄 📉 https://binapex.com 📈 📄 📃
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 22, 2018, 01:31:18 AM
 #9

Несколько поэкспериментировал.
Подкорректировал 'код на коленке' и привязал его к кнопке 'Get Post',
добавив id кнопки.
Добавил в данную кнопку ссылку для наглядности.
Быть может теперь сможете разглядеть новые варианты решения задачи?
https://wall.0xbt.net/ball6.html

yart
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
December 03, 2018, 10:40:02 PM
 #10

Народ, извиняюсь за оффтоп!

У меня вопрос по той же теме, но в иной плоскости: надо подтянуть по адресу юзера его дивиденды по заданному смарткотракту. То есть, сделать то, что можно посмотреть вот здесь https://etherscan.io/address/0xdDFc21DF6f2556528b21574695c7b33f22e60A70#readContract в 6 разделе. кто знает, куда копать?

Там на кнопку повешена функция ethcall2() - мне б хотя б найти как её подключить к своему скрипту, а в идеале надо бы понять, как эти данные автоматом подтягивать со самрт-контракта?
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
December 04, 2018, 05:34:23 AM
Last edit: December 04, 2018, 05:46:20 AM by bomj
 #11

У меня вопрос по той же теме, но в иной плоскости: надо подтянуть по адресу юзера его дивиденды по заданному смарткотракту. То есть, сделать то, что можно посмотреть вот здесь https://etherscan.io/address/0xdDFc21DF6f2556528b21574695c7b33f22e60A70#readContract в 6 разделе. кто знает, куда копать?
Эту кнопку искали?
https://wall.0xbt.net/ex.html
https://wall.0xbt.net/ex1.html

yart
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
December 04, 2018, 09:10:47 AM
 #12

У меня вопрос по той же теме, но в иной плоскости: надо подтянуть по адресу юзера его дивиденды по заданному смарткотракту. То есть, сделать то, что можно посмотреть вот здесь https://etherscan.io/address/0xdDFc21DF6f2556528b21574695c7b33f22e60A70#readContract в 6 разделе. кто знает, куда копать?
Эту кнопку искали?
https://wall.0xbt.net/ex.html
https://wall.0xbt.net/ex1.html

Похоже на то!

Сейчас попробую реализовать это у себя. Будут вопросы - обязательно напишу!
yart
Newbie
*
Offline Offline

Activity: 3
Merit: 0


View Profile
December 04, 2018, 06:29:08 PM
 #13

У меня вопрос по той же теме, но в иной плоскости: надо подтянуть по адресу юзера его дивиденды по заданному смарткотракту. То есть, сделать то, что можно посмотреть вот здесь https://etherscan.io/address/0xdDFc21DF6f2556528b21574695c7b33f22e60A70#readContract в 6 разделе. кто знает, куда копать?
Эту кнопку искали?
https://wall.0xbt.net/ex.html
https://wall.0xbt.net/ex1.html

Спасибо вам огромное! Благодаря скриптам на вашей странице удалось понять и усвоить довольно-таки большой кусок информации )))
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
December 27, 2018, 06:49:44 PM
 #14

1. Закомментировал все что можно (вы уж извините за безграмотность,
я понимаю, что это все равно что кувалдой в операционной)
Все так же.
2. Спрятал часть скрипта.
3. Добавил поле и подвязал к кнопке 'Get News', не работает так как
хотелось, но результаты интересные. Подставил в данную кнопку ссылку для визуализации, иногда думаю для решения задачи стоит взглянуть.
Варианты:
https://wall.0xbt.net/ball8.html
https://wall.0xbt.net/ball9.html
https://wall.0xbt.net/ball10.html
https://wall.0xbt.net/ball11.html

Вот что осталось в результате:
Code:
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="https://rinkeby.etherscan.io/assets/plugins/jquery/jquery.min.js"></script>
<script type="text/javascript" src="https://rinkeby.etherscan.io/jss/web3.min.js?v=0.20.6"></script>
<!-- <script type="text/javascript" src="https://wall.0xbt.net/r1.js"></script> -->
</head>
<body>
<table>
<table>
 
<tr>
    <td>
      <!-- Поле для 'Send News' -->
      <input type="text" id="txt_addr2"/>     
    </td>
    <td>
      <input type="button" id="btn2" value="Подставить адрес из поля в 'Send News'">
      <script>
function addFunc2(){
if (document.getElementById("txt_addr2").value.trim().length == 0) {
  alert('Адрес не введен!');
  } else {
  var new_addr = document.getElementById("txt_addr2").value;
  document.getElementById("my_link").href = "https://rinkeby.etherscan.io/writecontract/index.html?a=" + new_addr + "&n=rinkeby";
  alert("Адрес '" + new_addr + "' подставлен! Закройте это окно и нажмите кнопку 'Send & News'");
  }
}
document.getElementById("btn2").onclick = addFunc2;
</script>       
    </td>
  </tr>
 
      <td>
      <!-- Поле для 'Get News' -->
      <input type="text" id="0xae4243e2c0f910223323dd2f2fdd16820b69f1d6"/>     
    </td>
    <td>
      <input type="button" id="btn_3" value="Подставить адрес из поля в 'Get News'">
      <script>
function addFunc2(){
if (document.getElementById("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6").value.trim().length == 0) {
  alert('Адрес не введен!');
  } else {
   
  var new_addr = document.getElementById("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6").value;
  document.getElementById("my_code").text = "https://rinkeby.etherscan.io/writecontract/index.html?a=" + new_addr + "&n=rinkeby";
  alert("Адрес '" + new_addr + "' подставлен! Закройте это окно и нажмите кнопку 'Get & News'");
  }
}
document.getElementById("btn_3").onclick = addFunc2;
</script>     
    </td>
  </tr>
 
</table>
 <tr><td>

<button class="knopka" id='btn_5'><a id="my_link" href="https://rinkeby.etherscan.io/writecontract/index.html?a=0xae4243e2c0f910223323dd2f2fdd16820b69f1d6&n=rinkeby"><span style="color:black;">Send News</span></a></button>
<!-- <input type="text" id="contract_instance" /> -->
<!-- <input type="text" id="0xae4243e2c0f910223323dd2f2fdd16820b69f1d6" /> -->
<button type='button' id='btn' class="knopka" onclick="ethcall2('getPost','input','myanswer','string', '|string', 'btn');"><a id="my_code" href="https://rinkeby.etherscan.io/writecontract/index.html?a=0xae4243e2c0f910223323dd2f2fdd16820b69f1d6&n=rinkeby" target="_blank">Get </a><i class="fa fa-btc"></i> News</button>
<div align="left"><b><span id='myanswer' style="color:teal"></span></b></div>
</body></td></tr></table>

 <script>
    var web3 = new Web3(new Web3.providers.HttpProvider("https://rinkeby.infura.io"));
   
    var version = web3.version.api;
    try {
        MyContract = web3.eth.contract([{"constant":true,"inputs":[],"name":"getPost","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newPost","type":"string"}],"name":"setPost","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]);
        myContractInstance = MyContract.at(document.getElementById('0xae4243e2c0f910223323dd2f2fdd16820b69f1d6').value);
myContractInstance = MyContract.at("0xae4243e2c0f910223323dd2f2fdd16820b69f1d6");
    }
    catch (err) {
        console.log(err.message);
    }
</script>
<script type="text/javascript" src="https://wall.0xbt.net/r1.js"></script>

</html>

Такое ощущение, что решение где-то рядом.
Еще раз прошу прощения за безграмотность в данном вопросе.

kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
December 28, 2018, 03:58:09 AM
 #15

В чем вопрос?
вставить яваскриптом текст из одного поля в другое? С каких пор это является проблемой?
Или надо событие отловить сначала? Тогда какое событие? Ставьте листенер на него.

OpenTrade - Open Source Cryptocurrency Exchange
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
December 28, 2018, 08:18:37 AM
 #16

В чем вопрос?
вставить яваскриптом текст из одного поля в другое? С каких пор это является проблемой?
Или надо событие отловить сначала? Тогда какое событие? Ставьте листенер на него.
Ну а как это сделать? Помоги пожалуйста.
Я уже данный вопрос и на форуме javascript задал, думал уж там решат. Тишина. А самое интересное, что я, не разбирающийся в js, нашел в гугл процентов 15-20 ответов на вопросы, заданные на том форуме.

kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
December 28, 2018, 08:40:15 AM
 #17

Используй jquery

$('#btn2').val($('#txt_addr2').val())

OpenTrade - Open Source Cryptocurrency Exchange
bomj (OP)
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
December 28, 2018, 09:48:26 AM
 #18

$('#btn2').val($('#txt_addr2').val())
Сразу же вбил это в гугл и на 1-ом месте мой вопрос на форуме javascript.
Спасибо за подсказку, буду тренироваться. Позднее сообщу о результатах.

kzv
Legendary
*
Offline Offline

Activity: 1722
Merit: 1285

OpenTrade - Open Source Cryptocurrency Exchange


View Profile WWW
December 28, 2018, 06:17:48 PM
Merited by chimk (3)
 #19

$('#btn2').val($('#txt_addr2').val())
Сразу же вбил это в гугл и на 1-ом месте мой вопрос на форуме javascript.
Спасибо за подсказку, буду тренироваться. Позднее сообщу о результатах.

JQuery подгружается к странице одной строчкой в хтмл. Зато сразу появляется в распоряжении мощная библиотека для которой примеров в инете вагон и тележка.
Объясняю код:
$ - это имя функции JQuery. С этого имени начинаются все обращения к библиотеке.
'#btn2',  '#txt_addr2' - это обращение к твоему элементу по его id. Можно еще обращаться по имени класса, тогда вместо решетки будет точка.
$('#txt_addr2').val() - JQuery получает значение элемента с ид=txt_addr2
$('#btn2').val($('#txt_addr2').val()) - JQuery записывает значение элемента с ид=txt_addr2 в значение элемента с ид=btn2

OpenTrade - Open Source Cryptocurrency Exchange
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!