我有一个不寻常的任务,我必须从锚点获取px(x,y)中的文本位置,但是我不知道如何执行此操作:
这是锚点的图像:
这是代码:
<a id="anchor" href="#" runat="server" style="display: inline-block; border-color: #000000; text-decoration: none; border-style: solid; border-width: 1px; background-repeat:no-repeat; width:100px; height:50px;">Text</a>
在ASP.NET或/和JavaScript中有什么办法吗?我正在考虑在文本周围环绕跨度并使用js获取offsetWidth / offsetHeight,但这只会使我得到大小,而不是文本在锚点中的位置。
更新:疯狂的结果
我改变了一点代码:
<div style="display:inline-block;">
<p class="category-label" align="center">Normal state preview</p>
<a id="anchor" href="#" runat="server" style="display: inline-block; border-color: #000000; text-decoration: none; border-style: solid; border-width: 1px; background-repeat:no-repeat; font-family:Arial; font-size:10px; color:#000000; width:100px; height:50px;">
<div runat="server" id="anchorText">Text</div></a>
</div>
<input type="hidden" id="anchorTextTop" runat="server" />
<input type="hidden" id="anchorTextLeft" runat="server" />
这是我使用的Js:
function GetTextPosition() {
var TextTop = document.getElementById('<%= anchorText.ClientID %>').offsetParent.offsetTop;
var TextLeft = document.getElementById('<%= anchorText.ClientID %>').offsetParent.offsetLeft;
document.getElementById('<%= anchorTextTop.ClientID %>').value = TextTop;
document.getElementById('<%= anchorTextLeft.ClientID %>').value = TextLeft;
}
我得到的价值观:
anchorTextTop = 78(距离顶部只有几个像素)
anchorextLeft = 541(不能是锚点的5倍)
如果我在js中使用它:
var TextTop = document.getElementById('<%= anchorText.ClientID %>').offsetTop;
var TextLeft = document.getElementById('<%= anchorText.ClientID %>').offsetLeft;
我越来越:
anchorTextTop = 100
anchorextLeft = 201
可能是因为控件标记为runat =“ server”吗?
参考方案
您无法获得文本在元素内的位置。您需要将文本包装在<span>
(或内联<div>
)中,并获取.offsetTop/.offsetLeft
的<span>
。要使偏移相对于父级,请将父级设置为position: relative;
。
演示:http://jsfiddle.net/ThinkingStiff/wC4St/
HTML:
<div style="display:inline-block;">
<p id="category-label" align="center">Normal state preview</p>
<a id="anchor" href="#" runat="server" style="display: inline-block; border-color: #000000; text-decoration: none; border-style: solid; border-width: 1px; background-repeat:no-repeat; font-family:Arial; font-size:10px; color:#000000; width:100px; height:50px;">
<span runat="server" id="anchorText">Text</span></a>
</div>
CSS:
#anchor {
position: relative;
text-align: center;
}
脚本:
document.getElementById( 'category-label' ).textContent =
'left: ' + document.getElementById( 'anchorText' ).offsetLeft
+ ' top: ' + document.getElementById( 'anchorText' ).offsetTop;
输出:
将Web用户控件添加到页面时,asp按钮onclick不会触发 - javascript我正在使用使用Visual Studio模板创建的Web表单应用程序。模板具有一个内容占位符,该占位符被访问的任何页面的内容替换。有问题的页面有几个服务器控件,例如文本框,标签和按钮。当我单击我的更新按钮时,它可以正常工作,这些值会回传并更新数据库。我想在所有子页面上创建通用的登录提示。我的导航栏(位于我的母版页中)具有引导程序设置。我在导航栏中添加了一个下…
Asp.net发送信息表单到页面 - c#我正在尝试使用弹出窗口中的新信息更新旧页面。到目前为止,我尝试过将结果保存在会话中Session["Data"] = DLvrijecampingplaatsen.SelectedItem; 然后当它达到Page_Load时,将其重新加载回旧页面if (Session["Data"] != null) { LBkies…
与Mootools Scriptmanager Ajax Asp.net发生冲突? - c#我正在尝试不同的方法来使这项工作成功,但是没有成功。我正在尝试将mootools与asp.net应用程序集成。我只想用它为我的网站添加一些效果。我也使用更新面板,scriptmanager,因为不希望有完整的回发。在控制台上引发错误TypeError:clientID.startsWith不是函数,并且在进行更新时brwoser reset...。这是整个代…
使用Java脚本基于另一个控件项来验证ASP.NET C#控件 - c#我正在尝试确保一个下拉框或另一个下拉框具有选定的条目,不能两者都选,并且不能都留空/未选择。每次单击运行javascript验证代码的搜索按钮时,即使我只是从一个下拉列表中选择,甚至从两个下拉列表中都没有选择,我都会收到一条消息,好像在两个下拉框中都选择了一样!这可能是我的逻辑,但是,我认为也可能是我的变量读为null。是否有人对问题可能是什么以及如何解决这…
JavaScript方法在ASP.NET用户控件中不起作用 - c#我问过一个关于JavaScript代码的问题,您可以在这里看到它:How can I scroll down to a multiline TextBox's bottom line, Javascript's scrollIntoView is not working for this。好了,它已经解决,可接受的答案正在起作用。之后,我…