将脚本传递给innerHTML

时间:2017-04-21 03:45:33

标签: javascript jquery html

在您将其标记为重复之前,我已经查看了hereas wellhere too,但我似乎无法找到可行的解决方案。据我所知,由于脚本标记,我无法将脚本传递给innerHTML。但有没有办法将这个特定的API推入div而不将其放在HTML页面上。我有一个输入输入并运行几个$ .get以获取股票信息的按钮,所以我想将其作为结果的一部分包含在内,但是,不允许使用innerHTML,并且我尝试了许多解决方案。上面的链接,无济于事 我可以将下面的脚本放在HTML页面上的div中,但我不想这样做,而且我需要获取用户输入,因此将它放在我的.js中将更容易一起执行所有功能。我包含了小部件的js。

<script type="text/javascript">
new TradingView.widget({
  "width": 480,
  "height": 400,
  "symbol": "NASDAQ:AAPL",
  "interval": "D",
  "timezone": "Etc/UTC",
  "theme": "White",
  "style": "1",
  "locale": "en",
  "toolbar_bg": "#f1f3f6",
  "enable_publishing": false,
  "hide_top_toolbar": true,
  "save_image": false,
  "hideideas": true
});
</script>

到目前为止我已经

var script = document.createElement('script');
script[(script.innerText===undefined?"textContent":"innerText")] = "new TradingView.widget({ 'width': 580, 'height': 400, 'symbol': 'NASDAQ:"+ticker+ "','interval': 'D','timezone': 'Etc/UTC','theme': 'White','style': '1','locale': 'en','toolbar_bg': '#f1f3f6','enable_publishing': false,'hide_top_toolbar': true,'save_image': false,'hideideas': true});";
document.getElementById("stockChart").appendChild(script);

这项工作但不是我想要的方式,但是,这只是执行该脚本而且这个图表是唯一显示在页面上的东西,有没有办法可以强制它在<div> ?使用上面的解决方案,脚本被执行,但没有将小部件放在div中(看起来,我可能是错的。我对此并不精通)。

what it is doing 在这张图片中,当我使用JS文件和其他操作一起运行脚本时,它只是在页面上显示图形。

when code is in html file 这是当代码在div中并且在运行任何JS函数之前,我猜它在div中,但是,我需要在框中放置一个输入,以便所有信息都可以显示在一个页面上,如下所示< / p>

where I want it to be 我希望图表放在红点中,<div>

HTML

<div id="content">
          <img src="icon/logo.png">
          <h1>Search Shares</h1>
          <div id="stockTickGet">
            Ticker: <input type="text" id="tickBox" list="options"/>
            <button onclick="Ticker()" id="tickerSubmit" class="btn btn-primary">Submit</button>
            <datalist id="options"></datalist>
          </div>
          <div id='showStockTick' class='stockTicker'></div>
          <!-- <div id='stockChart'></div> -->
          <div id='stockChart'>
          </div>      
          <div id='showStockSearch' class='stockTicker'></div>
          <div id='newsresult' class='stockTicker'></div>

          <button class="btn btn-primary" data-toggle="modal" data-target="#modal1">Buy Stocks</button>

        </div>

从某种意义上说,这就是我想要做的,但不允许/工作

document.getElementById("stockChart").innerHTML = "<script> new TradingView.widget({ 'width': 580, 'height': 400, 'symbol': 'NASDAQ:GOOG','interval': 'D','timezone': 'Etc/UTC','theme': 'White','style': '1','locale': 'en','toolbar_bg': '#f1f3f6','enable_publishing': false,'hide_top_toolbar': true,'save_image': false,'hideideas': true});<"+"/script>";

1 个答案:

答案 0 :(得分:2)

虽然脚本可以放在div中,但这里的误解似乎是你可以为脚本生成的任何html选择目标div。

如果没有看到脚本代码或者至少知道脚本是什么,就不可能说脚本是否产生任何html元素,或者即使它完成了,你也无法知道它是如何在当前页面中注入的。

new TradingView.widget(..)。即使您将此作为脚本元素放置在页面中的html元素上,它也可以跳过一个跳汰机并为我们所知道的所有人烹饪炖菜。

至于问题的解决方案:

我搜索了Tradingview.widget并找到了这个页面:www.tradingview.com。这似乎是你在说什么。查看页面源代码,您似乎可以在窗口小部件选项中添加container_id

new TradingView.widget({
     ...
     container_id : "widget-frame-container";
});

这意味着如果你有一个带有所述id的div:

<div id="widget-frame-container"></div>

然后我假设无论脚本产生什么都会被注入。

很抱歉没有进行测试并给出了半个答案!