функция javascript не остановит зацикливание - это на сайте netsuite - PullRequest
0 голосов
/ 04 июня 2010

Мне нужно один раз изменить переключатель раскрывающегося списка и способ доставки, используя функцию javascript, а не навсегда.

Однако, когда я использую эту функцию, которая выполняется, когда на странице просмотра и отправки, когда заказ составляет <$ 5, она идет в бесконечный цикл: </p>

function setFreeSampShipping(){
 var options = document.forms['checkout'].shippingcarrierselect.getElementsByTagName('option');
 for (i=0;i<options.length;i++){
  if (options[i].value == 'nonups'){
   document.forms['checkout'].shippingcarrierselect.value='nonups';
   document.forms['checkout'].shippingcarrierselect.onchange();
   document.location.href='/app/site/backend/setshipmeth.nl?c=659197&n=1&sc=4&sShipMeth=2035';
  }
 }
}

Он вызывается из этой части функции setSampPolicyElems (), которую, как вы можете видеть, я прокомментировал, чтобы остановить цикл:

if (carTotl < 5 && hasSampp == 1) { 
    /*
    if (document.forms['checkout'].shippingcarrierselect.value =='ups'){
      setFreeSampShipping();
    }
    */
    document.getElementById('sampAdd').style.display="none";
    document.getElementById("custbody_ava_webshiptype").value = "7";//no charge free freight
    if (document.getElementById("applycoupon")) {
        document.location.href='/app/site/backend/setpromocode.nl?c=659197&n=1&sc=4&kReferralCode=SAMPLE'
    } 
    document.write("<div id='msg'><strong>Sample & Shipping:</strong></span> No Charge. (Your sample order is < $5.)</div>");
}

Чтобы увидеть проблему, перейдите к обзору заказа и отправьте страницу здесь: https://checkout.netsuite.com/s.nl?c=659197&sc=4&n=1 (или перейдите к http://www.avaline.com, нажмите «Оформить заказ» и войдите в систему)

Вы можете войти с этими учетными данными:
Электронная почта: test2@gmail.com
Pass: test03

Мое решение до сих пор заключалось в том, чтобы поменять строку триггера события onchange () с этим, поскольку я не запускаю document.location.href дважды: вместо этого я передаю две переменные в одной строке запроса URL :

var dropdown = document.getElementById('shippingcarrierselect');
document.body.style.cursor = 'wait';
document.location.href='/app/site/backend/setshipmeth.nl?c=659197&n=1&sc=4&sShipMeth=2035&sShipCarrier='+dropdown.value;

Ответы [ 2 ]

0 голосов
/ 07 июня 2010

Это было мое решение:

var dropdown = document.getElementById('shippingcarrierselect'); document.body.style.cursor = 'wait'; document.location.href='/app/site/backend/setshipmeth.nl?c=659197&n=1&sc=4&sShipMeth=2035&sShipCarrier='+dropdown.value;
0 голосов
/ 05 июня 2010

Ваша переменная "i" является глобальной. Кроме того, вы должны хранить options.length в переменной. «i» может быть установлено некоторыми скриптами, которые вызывают бесконечный цикл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...