私がやっていることは、例えば各都市の天気を示す、ダイナミックな人物です。JS文書を簡素化しようとしています
-1
A
答えて
-1
これは実際には単純化する必要はありませんが、操作を別々のステップ(関数を使用して)に分割するとさらに簡単になる場合があります。
var weather = {
getTemps: function(){
return $("#in1").val().split(" ");
},
buildGraph: function(temps){
var a = 60, graph="", hi = 0;
for (var i=0; i<temps.length; i++) {
hi = temps[i] * 5;
graph += '<rect width="50px" class="grp" id="id' + temps.lengtg + '" height="' + hi + '" x="' + a + '" data-temp="' + temps[i] + '"/>';
a += 110;
}
return graph;
},
initMouseEvents: function(){
$("rect").mouseover(function (e) {
var x = e.pageX, y = e.pageY;
var temp = $(this).attr('data-temp');
$("#temp").text(temp + "c");
$("#temp").css("left", x + "px");
$("#temp").css("top", y-45 + "px").show();
}).mouseout(function() {
$("#temp").hide();
});
},
init: function(){
var temps = this.getTemps();
var graph = this.buildGraph(temps);
$("#svg1").html(graph);
this.initMouseEvents();
}
}
$(document).ready(function(){
weather.init();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<figure id="fg1">
<input type="hidden" value="70 80 35 20 110" id="in1" />
<figcaption> weather</figcaption>
<svg width="500px" height="230px" id="svg1" />
</figure>
-1
私は、これはあなたが期待している結果に近いと思います。
SVGフレームのため、 'y'座標を反転する必要があることが重要です。
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function (grp) {
updateSVG();
$("#update").click(function (e) {
updateSVG();
e.preventDefault();
});
$(document.body).on('mouseover','svg .temp', function() {
var id = $(this).attr("data-index");
var temp = $(this).attr("data-temp") + "C";
$("#text-" + id).html(temp).show();
});
$(document.body).on('mouseout','svg .temp', function() {
var id= $(this).attr("data-index");
$("#text-" + id).hide();
});
function updateSVG() {
$("#svg1").html("");
var temps = $("#in1").val().split(" ");
var content = "";
for (var i in temps) {
var temp = temps[i];
var x = i * 110;
var y = (230 - temp);
var elem = '<rect style="fill:rgb(0,0,200)" class="temp" width="50px" class="grp" id="id' + i + '" height="' + (temp) + '" x="' + x + '" y="' + y + '" data-index="' + i + '" data-temp="' + temp + '"/>';
var text = '<text style="display:none;" id="text-' + i + '" x="' + x + '" y="' + (y - 20) + '" font-family="Verdana" font-size="15">Hello, out there</text>';
content += elem + text;
}
$("#svg1").html(content);
}
});
</script>
</head>
<body>
<figure id="fg1">
<label>Type here the temperatures</label>
<input id="in1" type="text" value="70 80 35 20 110" />
<button id="update">Update graph</button>
<figcaption> weather</figcaption>
<svg width="500px" height="230px" id="svg1" />
</figure>
</body>
</html>
+0
私はこのフォーラムに合わない質問で助けようとしたので、 "-1"を得ましたか? –
+0
誰もがここで警察だと思っています。 –
関連する問題
- 1. このコードを簡略化しようとしています
- 2. アプリケーションをどのように文書化していますか?
- 3. このコードを簡略化して修正しようとしています
- 4. バニラjsを使用して文書にdivを追加しようとしています
- 5. 簡素化if文、Javaの
- 6. デフォルト値は、Iのような簡単な関数を定義しようとしていますJSフィドル
- 7. PHP - preg_replace簡素化しますか?
- 8. アスタリスクSIPメッセージフローを簡素化したい
- 9. REST APIをどのように文書化していますか?
- 10. realexpaymentsを調べようとしています - js(rxp-js)
- 11. はZ3に簡素化してpull_nested_quantifiersオプションの作業をしていますか?
- 12. 簡単なレシピプログラムを作成しようとしています
- 13. 簡単なパスワード確認をしようとしています
- 14. 私は辞書を使用して、リスト内の要素を分類しようとしています辞書
- 15. ApacheでPHPスクリプトとHTML文書を実行しようとしています
- 16. 配列を簡素化するif文をPython27で 'if array in bigArray'のように書く
- 17. 文字列から複素数を抽出しようとしています
- 18. ページロード後にjsリンクをロードしようとしています
- 19. ノードjsでDOMParserを使用しようとしています
- 20. sails jsプロジェクトをドッキングしようとしています
- 21. symfony2:jsを追加しようとしています
- 22. AngularJSはjsフィルタを理解しようとしています
- 23. XML文書でPCDATAを編集しようとしています
- 24. json文字列を辞書にマップしようとしています
- 25. 文書の最初の列を削除しようとしています。
- 26. Excelの文書で「テーブル」のリストを取得しようとしています
- 27. オブジェクトを使用してd3.jsのコードを簡略化する
- 28. 条件文の簡素化android
- 29. Autofacは:私たちのMediatRコードを簡素化しようとしますが、一般的なタイプの
- 30. 簡素化テンプレートパラメータ
私はコードレビュースタックExchangeにこの質問を提出する推薦する:https://codereview.stackexchange.com/。 Stack Overflowは一般的なコードアドバイスではなく、バグに関する特定の質問に答えるためのものです。 – Hamms
@HammsこれはおそらくCRにとって十分ではありません。 https://codereview.meta.stackexchange.com/questions/5777/a-guide-to-code-review-for-stack-overflow-usersを参照してください – Barmar
それは私にはかなり簡単に見えます。あなたは 'for'ループを' $ .each() 'に置き換えることができますが、改善のための他の機会はあまりありません。 – Barmar