【问题标题】:adding variable in embeded code with dropdownlist使用下拉列表在嵌入式代码中添加变量
【发布时间】:2012-05-29 03:01:57
【问题描述】:

我正在尝试制作一个显示 yahoo 图形嵌入代码的脚本

嵌入脚本是

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

在此脚本中,我希望从下拉菜单列表中获取 state=symbol=^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>

脚本不工作,请帮我修复错误。

【问题讨论】:

    标签: javascript html variables embed


    【解决方案1】:

    tfw.调试器:

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

    使用网络浏览器的 console.log(string) 控制台/调试器功能在有疑问时测试您的对象和变量(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>
    

    ;)

    【讨论】:

    • 我应该将这些行添加到代码中... //try { console.log(D11); } catch(err) { window.alert(String(D11)); } //$('div#looknorth').html(text);
    • try 块用于调试。我习惯了 jquery,所以我在测试中留下了评论,以防它有用。
    • 任何人都可以纠正代码并帮助我.. 因为我完全糊涂了
    • 当您按下计算时,使用第二个选项^bsen,不会生成图表。上面的代码在选择“ Analyally”选项时为您似乎想要的代码生成图。
    • 感谢@tfw 现在它正在工作。你可以在rupeeinvest.com/866/testing上看到它。
    【解决方案2】:
    <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 时,它​​不知道您想要什么。

    【讨论】:

    • 仍然给出错误对象不支持此属性或方法
    • 这里似乎有些错误 - D1 = document.getElementsByName("D1")[0]
    • 在 Chrome 和 Firefox 上都适用于我(我无法访问 IE)。您是否尝试将 ID 添加到 D1 选择并使用它?像 D1 = document.getElementById("D1");并且选择是
    • 当数据出现错误时,它显示的 NaN 图表是什么图表,变量给你的答案是 Nan,它是一个雅虎代码,虽然显示了图表,但它不是有意的结果
    • 1.是document.getElementsByTagName("D1")[0];,不是document.getElementsByName("D1")[0]; 2. 此处无需使用parseFloat(),因为^nsei^bsen 不包含数值
    【解决方案3】:

    你的代码有几个问题:

    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>';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 2021-06-02
      • 2012-03-10
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多