2010-06-04 5 views
0

Мне нужно изменить переключатель переключателя доставки и доставки через один раз с помощью функции javascript, а не навсегда.Функция javascript не перестанет зацикливаться - она ​​находится на сайте netsuite

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

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, нажмите кнопку "Оформить заказ", и логин)

Вы можете войти в эти учетные данные:
Email: [email protected]
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; 

ответ

0

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

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

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

+0

Возможно я полагаю. По какой-то причине он был указан как глобальная переменная в firebug, хотя я не знаю, где это было объявлено, и я не сталкивался с проблемами с ним до того, как использовал «var i» для циклов .... Зачем хранить options.length в переменной? – Lauren