问题大纲:我有几个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”。
答案 0 :(得分:0)
有几点:
term
的值分别为“1”,“2”,“3”或“”,而不是option
开始和结束标记之间的文字。这就是为什么将它改为=工作,然后条件评估为真。
您的功能无需返回任何内容。但是,您可能希望将其调用替换为sOutput(text); return false
或某些等效内容,以防止表单提交。
一个小问题,但select
的ID和名称应该相同。
您将text
作为对象传递给该函数,但更简洁的方法是传递ID“text”,并以与e1
相同的方式检索term
,使用document.getElementById
。
前两点应足以让它完全有效,具体取决于浏览器的挑剔程度。
答案 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;
}