使用下拉列表在嵌入式代码中添加变量

adding variable in embeded code with dropdownlist

本文关键字:添加 变量 代码 嵌入式 下拉列表      更新时间:2023-09-26

我正在尝试制作一个显示雅虎图嵌入式代码的cript

嵌入式脚本是

<embed bgcolor="#dbdbd3" flashvars="lcId=1169793726234&amp;state=symbol%3D^nsebank;range=1d;indicator=ema(13,34,55)+macd+rsi+stochasticfast;charttype=candlestick;crosshair=on;ohlcvalues=0;logscale=on;source=undefined" loop="false" menu="false" name="BANKNIFTY" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://us.js2.yimg.com/us.yimg.com/i/us/fi/yfc/swf/flashchart_1.18.swf" style="height: 775px; width: 550px" type="application/x-shockwave-flash" wmode="opaque"></embed>

在这个脚本中,我希望从下拉菜单列表中获取状态=符号=^NSEbank(^NSEbank)的值,然后当单击计算按钮时,它会显示嵌入的代码

我编写的代码如下 -

<div id="looknorth"></div>
<script type="text/javascript">
function ln(){
D11=parseFloat(D1.value);
document.getElementById('looknorth').innerHTML='<embed bgcolor="#dbdbd3" flashvars="lcId=1169793726234&amp;state=symbol%3D"+D11+";range=1d;indicator=ema(13,34,55)+macd+rsi+stochasticfast;charttype=candlestick;crosshair=on;ohlcvalues=0;logscale=on;source=undefined" loop="false" menu="false" name="BANKNIFTY" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://us.js2.yimg.com/us.yimg.com/i/us/fi/yfc/swf/flashchart_1.18.swf" style="height: 775px; width: 550px" type="application/x-shockwave-flash" wmode="opaque"></embed>';} </script>
<table border=1 cellpadding=2 cellspacing=1  width="400">
<tr>
<td style="background-color:#123742; font-size:12 ; font-weight:bold">
<font color="#FFFFFF">Compounding</font>
<td>&nbsp;<br />
<select name="D1">
<option value="^nsei">Annually</option>
<option value="^bsen">Half Yearly</option>
</select>
<tr>
<td colspan="2" ALIGN="center">
<input type=button style="background-color:#123742; color:#FFFFFF; font-weight:bold; font-size:15" name=calculate value=Calculate onClick=ln();>
</table>

脚本不起作用,请帮助我修复错误。

tfw.debugger:

  1. @parseFloat(D1) - 字符串(选项值)不提供可分析的数字。 最终出现在嵌入标记中的结果是"NaN",而不是提供的选项值; 第二个选项中提供的值对我不起作用,第一个选项对我有用,所以我会检查您在那里发送的内容。
  2. 我注意到您的字符串中有一个"%3D"实体,它无法转义为等号。 检查要发送的变量的语法。 例如,state=symbol%3D'+D11+';range=1d;…就是你所拥有的。
    • 这意味着state=symbol=^nsei;…看起来非常错误。 您可能需要检查这些变量。
  3. 字符串"innerHTML"@" 中的错误 – 您在字符串中插入 D1 的位置。

使用 Web 浏览器的控制台.log(字符串)控制台/调试器功能在有疑问时测试对象和变量(F12 在大多数浏览器中调出控制台/开发工具)


<div id="looknorth"></div>
<script language='javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<script type="text/javascript">
function ln(){
//var D11=String($('select[name=D1]').val());
var D11=String(D1.value),
    text = '<embed bgcolor="#dbdbd3" flashvars="lcId=1169793726234&amp;state=symbol%3D'+D11+';range=1d;indicator=ema(13,34,55)+macd+rsi+stochasticfast;charttype=candlestick;crosshair=on;ohlcvalues=0;logscale=on;source=undefined" loop="false" menu="false" name="BANKNIFTY" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://us.js2.yimg.com/us.yimg.com/i/us/fi/yfc/swf/flashchart_1.18.swf" style="height: 775px; width: 550px" type="application/x-shockwave-flash" wmode="opaque"></embed>';
//try { console.log(D11); } catch(err) { window.alert(String(D11)); }
//$('div#looknorth').html(text);
document.getElementById('looknorth').innerHTML=text;
}
</script>
<table border=1 cellpadding=2 cellspacing=1  width="400">
<tr>
<td style="background-color:#123742; font-size:12 ; font-weight:bold">
<font color="#FFFFFF">Compounding</font>
<td>&nbsp;<br />
<select name="D1" id="D1">
<option value="^nsei">Annually</option>
<option value="^bsen">Half Yearly</option>
</select>
<tr>
<td colspan="2" ALIGN="center">
<input type=button style="background-color:#123742; color:#FFFFFF; font-weight:bold; font-size:15" name=calculate value=Calculate onClick=ln();>
</table>

;)

<div id="looknorth"></div>
<script type="text/javascript">
function ln(){
    D1 = document.getElementsByName("D1")[0]
    D11=parseFloat(D1.value);
    document.getElementById('looknorth').innerHTML='<embed bgcolor="#dbdbd3" flashvars="lcId=1169793726234&amp;state=symbol%3D'+D11+';range=1d;indicator=ema(13,34,55)+macd+rsi+stochasticfast;charttype=candlestick;crosshair=on;ohlcvalues=0;logscale=on;source=undefined" loop="false" menu="false" name="BANKNIFTY" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://us.js2.yimg.com/us.yimg.com/i/us/fi/yfc/swf/flashchart_1.18.swf" style="height: 775px; width: 550px" type="application/x-shockwave-flash" wmode="opaque"></embed>';
}
</script>
<table border=1 cellpadding=2 cellspacing=1  width="400">
<tr>
<td style="background-color:#123742; font-size:12 ; font-weight:bold">
<font color="#FFFFFF">Compounding</font>
<td>&nbsp;<br />
<select name="D1">
<option value="^nsei">Annually</option>
<option value="^bsen">Half Yearly</option>
</select>
<tr>
<td colspan="2" ALIGN="center">
<input type=button style="background-color:#123742; color:#FFFFFF; font-weight:bold; font-size:15" name="calculate" value="Calculate" onClick='ln()'>

​​​​​​​​​​​​​​​​​​

你在 innerHTML 行周围有一些不匹配的引号。同样,你从来没有在你的javascript中定义过D1是什么,所以当你要求D1.value时,它不知道你想要什么。

代码中几乎没有问题:

  1. JS不知道D1是你的html选择控件的名称除非你定义它。
  2. 设置looknorth的内部html时不正确地使用单引号和双引号。
  3. parseFloat 需要一个包含数值的字符串,但你例如,传递 ^nsei,这是无效的。

将 JS 函数替换为:

function ln(){
    var D1 = document.getElementsByTagName("D1")[0];
    var D11 = D1.value;
    var lknorth = document.getElementById('looknorth');
    lknorth.innerHTML= '<embed bgcolor="#dbdbd3" flashvars="lcId=1169793726234&amp;state=symbol%3D' + D11 + ';range=1d;indicator=ema(13,34,55)+macd+rsi+stochasticfast;charttype=candlestick;crosshair=on;ohlcvalues=0;logscale=on;source=undefined" loop="false" menu="false" name="BANKNIFTY" pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://us.js2.yimg.com/us.yimg.com/i/us/fi/yfc/swf/flashchart_1.18.swf" style="height: 775px; width: 550px" type="application/x-shockwave-flash" wmode="opaque"></embed>';
}