2013-06-15 2 views
0

Проблема: у меня есть пара страниц php, очищающих данные с веб-страницы, и они выполняют вычисления с этими данными и присваивают их переменной. Затем я назначаю эти переменные php переменным javascript. Затем у меня есть раскрывающийся список. Затем переменная, созданная с каждой страницы, должна быть привязана к каждому значению в выпадающем списке. После выбора значения в списке и нажатия кнопки «Рассчитать» значение будет выводиться в текстовое поле. Что происходит, так это то, что нет выхода. Страницы скребка включены в страницу.Вызов функций javascript из раскрывающегося списка с переменными php

Мой HTML код:

<form> 
    <select id="term" name="terms"> 
    <option value="">Select an Investment length:</option> 
    <option value="1">Short Term</option> 
    <option value="2">Medium Term</option> 
    <option value="3">Long Term</option> 
    </select> 
<input type="text" id="text" name="text" size="18" value = "0"> 
<button onclick="sOutput(text)">Calculate</button> 
</form> 

My Javascript, содержащиеся во внешнем документе:

function sOutput(e1){ 

    var shortTerm = <?php echo json_encode($term1); ?>; 
    var mediumTerm = <?php echo json_encode($term2); ?>; 
    var longTerm = <?php echo json_encode($term3); ?>; 

    var term=document.getElementById("term").value; 

    if(term=="Short Term"){ 
     return e1.value = shortTerm; 
    } 
    else if(term=="Medium Term"){ 
     return e1.value = mediumTerm; 
    } 
    else if(term=="Long Term"){ 
     return e1.value = longTerm; 
    } 
    else if(term=="Select an investment length:"){ 
     return e1.value = '0'; 
    } 
    else return false; 

} 

Он работал, когда я просто заменил == с = по какой-то причине только в той мере, в какой он выводит только одну из переменных $term. Хотя с этим текущим кодом он ничего не выводит, и текстовое поле text остается с «0».

ответ

0

Пару моментов:

  1. Значение term является "1", "2", "3" или "" соответственно, не текст между option начинаются и конечные теги. Вот почему его изменение на = работало, так как тогда условие оценивается как true.

  2. Ваша функция не должна ничего возвращать. Однако вы можете заменить его вызов sOutput(text); return false или некоторым эквивалентом, чтобы предотвратить отправку формы.

  3. Небольшая точка, но идентификатор и имя select должны быть одинаковыми.

  4. text Вы передаете в качестве объекта в функцию, но аккуратнее способом было бы передать Ид «текст», и получить e1 точно так же, как term, с помощью document.getElementById.

Первые два очка должны быть достаточными, чтобы все это работало, в зависимости от того, насколько вы изящны ваш браузер.

+0

Это действительно помогает много, большое спасибо @Jer, однако страница затем освежают и значение является просто дополнением к ссылке '? Термины = 3 & текст = 6.92836551772' и TextField затем возвращается к«0» , Как я могу правильно передать эти данные, не потеряв их? Что-то связано с '

'? – deco20

+0

Это пункт 2, о котором я упомянул. Возможно, вам придется удалить возвращаемые данные из функции, но обычно меняя «

+0

хорошо, спасибо! – deco20

0

Вы можете использовать этот код для выполнения этой задачи.

function sOutput(e1){

var shortTerm = <?php echo json_encode($term1); ?>; var mediumTerm = <?php echo json_encode($term2); ?>; var longTerm = <?php echo json_encode($term3); ?>; var term=document.getElementById("term").value; if(term=="Short Term"){ document.getElementById(e1.value = shortTerm; } else if(term=="Medium Term"){ document.getElementById(e1).value = mediumTerm; } else if(term=="Long Term"){ document.getElementById(e1).value = longTerm; } else if(term=="Select an investment length:"){ document.getElementById(e1).value = '0'; } return false; }
Смежные вопросы