如何从文本体创建单词云?(JavaScript)

如何从文本体创建单词云?(JavaScript),javascript,jquery,html,d3.js,Javascript,Jquery,Html,D3.js,我正在尝试创建一个单词云,它将在用户输入后生成 大多数与word云相关的项目似乎都与D3js相关(尤其是此回购协议) 而我可以使用下面的方法让单词cloud发挥作用 <div id="chart"></div> <script> var text_string = "blah"; drawWordCloud(text_string); function drawWordCloud(text_string){ var stopWords

我正在尝试创建一个单词云,它将在用户输入后生成

大多数与word云相关的项目似乎都与D3js相关(尤其是此回购协议)

而我可以使用下面的方法让单词cloud发挥作用

<div id="chart"></div>

<script>
  var text_string = "blah";

  drawWordCloud(text_string);

  function drawWordCloud(text_string){
    var stopWords = ["blah blah blah"];

    var word_count = {};

    var words = ...
      }

    var svg_location = "#chart";
    var width = $(document).width();
    var height = $(document).height();

    var fill = d3.scale.category20();

    var word_entries = d3.entries(word_count);

    var xScale = ...;

    d3.layout.cloud().size([width, height])
      ....;

    function draw(words) {
     ...

    d3.layout.cloud().stop();
  }
</script>

var text_string=“blah”;
drawWordCloud(文本\字符串);
函数drawWordCloud(文本\字符串){
var stopWords=[“诸如此类”];
var word_count={};
变量字=。。。
}
var svg_location=“#图表”;
var width=$(文档).width();
var height=$(document.height();
var fill=d3.scale.category20();
var word_entries=d3.条目(word_计数);
var xScale=。。。;
d3.layout.cloud().size([宽度,高度])
....;
函数图(字){
...
d3.layout.cloud().stop();
}
我仍然面临两个问题:

  • 只有当它直接在我的index.html文档中,而不是在单独的.js工作表中时,它似乎才起作用

  • 只有当我在HTML文档中包含
    时,它才起作用,这是我最初不想做的(当用户输入输入内容,JS通过
    addHTML+='…'
    运行时,会添加额外的HTML,这是我想对wordcloud做的事情,以便生成它(基于用户的输入)并且只在用户输入并单击按钮后显示,就像文档的其余部分一样


  • 1您可能在#图表存在之前在头部加载单独的js,因此没有地方绘制它。您可以通过将
    drawWorldCloud
    放在
    $(function(){});
    (jquery文档就绪)中来解决此问题.2在尝试将图表绘制到图表后,您可能正在添加该图表。在您的
    addHTML+=
    呈现div之后调用drawWorldClount.@freedomn-m所以
    函数drawWordCloud(text_string){…}
    应该变成
    $(function(drawWordCloud)(text_string){})
    ?另外,你说的“jquery文档准备就绪”是什么意思?(抱歉,我才刚开始学习jquery)。明白了,谢谢。很遗憾,它仍然没有工作。它应该变成:
    $(function(){drawWordCloud(“blah”);;;