从php变量下拉调用javascript函数

时间:2013-06-15 12:35:48

标签: php javascript html-select

问题大纲:我有几个php页面从网页抓取数据,他们使用这些数据执行计算并将其分配给变量。然后我将这些php变量分配给javascript变量。然后我有一个下拉列表。然后,将从每个页面生成的变量链接到下拉列表中的每个值。在列表中选择一个值并单击“计算”按钮后,该值将输出到文本字段。发生的事情是没有输出。刮刀页面包含在页面中。

我的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>

我的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”。

2 个答案:

答案 0 :(得分:0)

有几点:

  1. term的值分别为“1”,“2”,“3”或“”,而不是option开始和结束标记之间的文字。这就是为什么将它改为=工作,然后条件评估为真。

  2. 您的功能无需返回任何内容。但是,您可能希望将其调用替换为sOutput(text); return false或某些等效内容,以防止表单提交。

  3. 一个小问题,但select的ID和名称应该相同。

  4. 您将text作为对象传递给该函数,但更简洁的方法是传递ID“text”,并以与e1相同的方式检索term ,使用document.getElementById

  5. 前两点应足以让它完全有效,具体取决于浏览器的挑剔程度。

答案 1 :(得分: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; }