Как положить js в js

147
29 марта 2019, 04:40

Суть: нужно, чтобы при нажатии на кнопку на странице появлялась карта доставщика (в данном случае, боксбери)! Но запихнув его в js он не срабатывает! Я любитель, может просто соринку не вижу!

function btnClick1() { 
  var Txt1 = ""; 
  var Txt2 = ""; 
  Txt1 = document.Test.bt.value; 
  Txt2 = document.Test.bt.name; 
  document.getElementById('ex1').innerHTML = "<div id='Dos_Inter'>" + 
    "<script>" + 
    "boxberry.openOnPage('boxberry_map');" + 
    "boxberry.open();" + 
    "function callback_function(result){ " + 
    "document.getElementById('city').innerHTML = result.name;" + 
    "document.getElementById('js-pricedelivery').innerHTML = result.price;" + 
    "document.getElementById('code_pvz').innerHTML = result.id;" + 
    "result.name = encodeURIComponent(result.name);" + 
    "document.getElementById('name').innerHTML = result.name;" + 
    "document.getElementById('address').innerHTML = result.address;" + 
    "alert('усть телефон');" + 
    "document.getElementById('workschedule').innerHTML = result.workschedule;" + 
    "document.getElementById('phone').innerHTML = result.phone;" + 
    "document.getElementById('period').innerHTML = result.period;" + 
    "if (result.prepaid=='1') { " + 
    "alert('Отделение работает только по предоплате!'); " + 
    "}" + 
    "}" + 
    "</script>" + 
    "<div id='boxberry_map'></div>" + 
    "</div>"; 
}
<div id="ex1"></div>

Answer 1

https://www.danielcrabtree.com/blog/25/gotchas-with-dynamically-adding-script-tags-to-html

function btnClick1() { 
  document.getElementById('ex1').innerHTML =  
    "<div id='Dos_Inter'>" + 
    "<div id='boxberry_map'></div>" + 
    "</div>"; 
  var script = document.createElement("script"); 
  var inlineScript = document.createTextNode("console.log('dynamic script');"); 
  script.appendChild(inlineScript);  
  document.getElementById('Dos_Inter').appendChild(script); 
}
<div id="ex1"></div> 
<button type="button" onclick="btnClick1()">Click</button>

Answer 2

Так, как у вас, работать не будет.

Код должен быть примерно таким:

  document.getElementById('ex1').innerHTML = "<div id='Dos_Inter'><div id='boxberry_map'></div></div>";
  function callback_function(result){ 
    document.getElementById('city').innerHTML = result.name;
    document.getElementById('js-pricedelivery').innerHTML = result.price;
    document.getElementById('code_pvz').innerHTML = result.id;
    result.name = encodeURIComponent(result.name);
    document.getElementById('name').innerHTML = result.name;
    document.getElementById('address').innerHTML = result.address;
    alert('усть телефон');
    document.getElementById('workschedule').innerHTML = result.workschedule;
    document.getElementById('phone').innerHTML = result.phone;
    document.getElementById('period').innerHTML = result.period;
    if (result.prepaid=='1') { 
      alert('Отделение работает только по предоплате!'); 
    }
  }
  boxberry.openOnPage('boxberry_map');
  boxberry.open();

Но где вы вызываете callback_function с объектом result? Возможно её вызывает boxberry? Если нет, то в конец кода нужно добавить:

callback_function(передаваемыйОбъект);
READ ALSO
Логический оператор ||

Логический оператор ||

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

171
Как поставить vue-owl-carousel в nuxt.js?

Как поставить vue-owl-carousel в nuxt.js?

Сделал все по инструкции

258
Как обрезать длинную строку в IE8?

Как обрезать длинную строку в IE8?

как обрезать длинную строку в IE8Перепробовал несколько вариантов ничего не вышло

131