在此处输入代码如果您查看此代码,它会获得div标签的左侧坐标 - http://jsfiddle.net/JuPA4/3/,这正是我所需要的。
$(function () {
var position = $("#red11").offset();
$("#amount").val(position.left);
});
(我已经在炒作论坛上询问过,现在已经3天没有答案了)
控制台错误是(Uncaught TypeError:无法读取属性'left'的 undefined)不确定为什么我可以与元素互动!
黑点元素位于名为#black
的div标记内,出于某种原因,上面发布的代码不适用于hype
文件!我知道我可以与它进行交互,我在页面上添加了一个演示,点击隐藏/显示以与点进行交互。
我不是最好用Javascript,所以如果有人有任何想法,那么帮助将不胜感激。
最终结果是左侧和顶部的坐标都更新为文本输入,因此我可以将它们放入数据库中。
答案 0 :(得分:1)
如果在与任何元素不匹配的选择器上调用.offset()
,它将返回undefined
,并且在将“black”元素添加到DOM之前,您的选择器似乎已执行。在将元素添加到DOM之后,您需要延迟代码。
您可以查看this question以获取解决方案。它显示了一种观察DOM的方法。
或者您可以尝试以下内容,只需尝试,等待并再次尝试,直到该元素出现:
<script>
function executeWhenExists(selector, wait, callback) {
if ($(selector).length > 0) {
callback();
} else {
setTimeout(function() { executeWhenExists(selector, wait, callback) }, wait);
}
}
$(function () {
executeWhenExists("#black", 1000, function() {
var position = $("#black").offset();
$("#amount").val(position.left);
});
});
</script>
甚至可能将代码延迟到窗口的加载事件(而不是让它在文档的ready事件中运行)。这看起来像这样:
<script>
$(window).on('load', function () {
var position = $("#black").offset();
$("#amount").val(position.left);
});
</script>