[英]Reposition button with simple JavaScript
我對 JavaScript 很陌生,只是第一次嘗試學習。 作為一個小練習,我正在嘗試做一些簡單的事情。
我幾乎是在嘗試重新定位頁面加載時的按鈕。 我做錯了什么?
我會很感激一些幫助。
我的代碼如下:
<style type="text/css">
.mybutton{
position:absolute;
}
</style>
腳本:
<script type="text/javascript">
window.onload=function(){
var mytestdiv = document.getElementById("testdiv");
var mytestbutton = document.getElementById("testdiv").childNodes()[0];
var y = mytestdiv.offsetWidth;
var x = mytestdiv.offsetHeight;
mytestbutton.style.right = x;
mytestbutton.style.top = y;
}
</script>
還有我非常簡單的 html:
<body>
<div id="testdiv" style="width:500px;border:solid #000000">
<input type="submit" id="myButton" value="TestMe">
</div>
</body>
編輯:我在螢火蟲中遇到的錯誤是:
mytestbutton.style 未定義
使用 CSS 設置位置時,您需要指定您使用的是什么測量...試試這個:
mytestbutton.style.right = x + "px";
mytestbutton.style.top = y + "px";
編輯:
另外,當它應該是#mybutton
.mybutton
.
指的是類, #
指的是ID
。
最后.childNodes
不是一個函數,它是一個屬性,所以你不需要()
,加上你有空格,所以你需要刪除它或使用.childNodes[1]
而不是.childNodes[0]
。
var mytestbutton = document.getElementById("testdiv").childNodes[1];
或者,你可以去
var mytestbutton = document.getElementById("myButton");
這里有幾個問題。 首先,以下將不起作用:
document.getElementById("testdiv").childNodes()[0]
childNodes
不是函數,而是一個類似數組的對象。 它應該像下面這樣:
document.getElementById("testdiv").childNodes[0]
但是,這也不會做你想要的 - 因為testdiv
中的第一個節點是一個文本節點(由許多空格字符組成)。 你可能想要這個:
document.getElementById("testdiv").childnodes[1]
但最簡單的解決方案是:
document.getElementById("myButton")
其次,正如另一個答案中提到的,您需要在將 CSS 樣式分配給對象時指定單位。
我強烈建議使用其中一種優秀的免費 javascript 框架來處理此類事情。 MooTools、JQuery、Prototype 和許多其他工具可以大大簡化從 javascript 動態設置 CSS 樣式的過程,而無需擔心古怪的事情,例如必須記住在位置值的末尾添加“px”等. MooTools 和 JQuery 等 Javascript 框架非常輕量級,但包含大量非常有用的功能,因此絕對值得研究:
// mootools
var el = $("myElement");
el.setStyle("left", 20);
el.setStyle("top", 10);
假設您希望按鈕轉到testdiv
容器的右上角,這就是您需要的:
<style>
#myButton {
position: absolute;
}
#testdiv {
height: 2em;
position: relative;
width:500px;
border:solid #000000;
}
</style>
請注意,您之前的 css 引用了具有mybutton
類的元素,而不是具有 id myButton
的元素。 position: relative
為myButton
的絕對位置提供定位上下文。
<script>
var button = document.getElementById('myButton');
button.style.top = 0;
button.style.right = 0;
</script>
您還應該注意,您的x
和y
在原始問題中被顛倒了——您在 y 軸上偏移了寬度,在 x 軸上偏移了高度。
和 HTML:
<body>
<div id="testdiv">
<input type="submit" id="myButton" value="TestMe">
</div>
</body>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.