0

问题大纲:我有几个 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;

}

当我出于某种原因简单地将其替换为==a时=,它只是在它只会输出一个$term变量的范围内工作。尽管使用此当前代码,它不会输出任何内容,并且text文本字段仍为“0”。

4

2 回答 2

0

几点:

  1. 的值分别是“1”、“2”、“3”或“”,而不是开始和结束标记term之间的文本。option这就是为什么将其更改为 = 起作用的原因,因为条件评估为真。

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

  3. 一个小问题,但 id 和 nameselect应该是相同的。

  4. 您将text作为对象传递给函数,但更简洁的方法是传递 id“文本”,并e1通过term使用document.getElementById.

不过,前两点应该足以让这一切正常工作,具体取决于您的浏览器有多挑剔。

于 2013-06-15T13:10:53.507 回答
0

您可以使用此代码来执行此任务。

函数 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; }
于 2013-06-15T14:10:00.963 回答