1

そこで、d3で作成したタグクラウドの例を使用しています。

http://www.jasondavies.com/wordcloud/#http%3A%2F%2Fsearch.twitter.com%2Fsearch.json%3Frpp%3D100%26q%3D%7Bword%7D=cloud

それにカーソルを合わせたときに各単語の上にDivを配置しようとしていますが、divの配置方法は、svg単語要素の変換属性に依存しているため、基本的に問題があります。

この変換属性は解析する必要のある文字列ですが、文字列には取得する必要のある正の値と負の値の両方が含まれています。

tagCloudHover.style("top", function(){

       //parses the words attributes for its position, and gives that position to tagCloudHover
       var str, matches, index, num;
        str = thisWord.attr("transform");
        matches = str.match(/\d+/g);
        for (index = 1; index < 2; ++index) {
                num = (parseInt(matches[index], 10));

        }



        if(num<0){
            return -num+"px";
        }else{
            return num+"px";
        }
  });

私のコードは上記のとおりで、最後のステートメントは何もしませんが、文字列からIntを取得できます。問題は、負の符号を取得しないことです。

私は構文解析が得意ではありませんが、いくつかの異なるstr.match関数を試しましたが、何も機能しないようです。

parseNinjasにアイデアはありますか?何でも役立ちます。アイザック

4

2 に答える 2

2

あなたの正規表現は/-?\d+/g、基本的-にパターンに「オプション」を追加する必要があります。

于 2012-08-08T22:32:07.563 に答える
1

解析する必要のある値がわかっている場合は、負の値に-1を掛けるだけです。

例:

num = -1 * (parseInt(matches[index], 10));
于 2012-08-08T22:39:44.023 に答える