垂直線と水平線のようにレンダリングされる div の束を表示しようとしています。コードは技術的には機能しますが、一貫して機能するとは限りません。最初のページ読み込みでは 1 行だけが表示され、次のページではまったく別の行が表示されるか、すべて表示される場合があります。同じ問題で IE8 と IE9 でこれをテストしていますが、この時点で少し迷っています。
スクリプトの登録に使用していますが、古い方法ScriptManager.RegisterStartupScript(this, GetType(), "linesCode", script, false);
を使用して同じことを行います。RegisterStartupScript(key, string)
ブラウザの「ソースの表示」から取得した、登録中のコード:
<script type="text/javascript">
$(document).ready(function () {
drawLineVertical('MainContent_1_ClauseRowDefaultTable', 'MainContent_3_AddRowTable', 2, 30);
drawLineHorizontal('MainContent_1_ClauseRowDefaultTable', 'MainContent_2_ConditionRowTable', 2, 40);
drawLineHorizontal('MainContent_1_ClauseRowDefaultTable', 'MainContent_3_AddRowTable', 2, 30);
});
</script>
処理中のコード (このほとんどは古いブログ投稿で見つかりました):
function drawLineVertical(id1, id2, wid, offset) {
var obj1 = document.getElementById(id1);
var obj2 = document.getElementById(id2);
var obj1Pos = GetCoordinates(obj1);
var obj2Pos = GetCoordinates(obj2);
var id = 'line_' + new Date().getTime();
var line = "<div id=\"" + id + "\" class=\"line\"></div>";
$('body').append(line);
$('#' + id).css({
left: obj1Pos.x,
top: obj1Pos.y,
height: ((obj2Pos.y - obj1Pos.y) + offset),
width: wid,
position: 'absolute',
background: '#c2c5d1',
backgroundcolor: '#c2c5d1'
});
}
function drawLineHorizontal(id1, id2, h, offset) {
var obj1 = document.getElementById(id1);
var obj2 = document.getElementById(id2);
var obj1Pos = GetCoordinates(obj1);
var obj2Pos = GetCoordinates(obj2);
var id = 'line_' + new Date().getTime();
var line = "<div id=\"" + id + "\" class=\"line\"></div>";
$('body').append(line);
$('#' + id).css({
left: obj1Pos.x,
top: (obj2Pos.y + offset),
height: h,
width: obj2Pos.x - obj1Pos.x,
position: 'absolute',
background: '#c2c5d1',
backgroundcolor: '#c2c5d1'
});
}
function GetCoordinates(obj) {
var pos = {};
pos.x = obj.offsetLeft;
pos.y = obj.offsetTop;
while (obj.offsetParent) {
pos.x = pos.x + obj.offsetParent.offsetLeft;
pos.y = pos.y + obj.offsetParent.offsetTop;
if (obj == document.getElementsByTagName("body")[0]) {
break;
}
else {
obj = obj.offsetParent;
}
}
return pos;
}
どんな入力でも大歓迎です。