Javascript-将顶部样式从“更改为”;ul";作为div父级的子级

Javascript-将顶部样式从“更改为”;ul";作为div父级的子级,javascript,css,Javascript,Css,我想使用javascript更改css的最大值,但它不起作用 我有以下代码: HTML: Javascript: function Down() { var class_obj = document.getElementsByClassName("test"); var ul_obj = class_obj.getElementsByTagName("ul"); ul_obj.style.top = parseInt(ul_obj.style.top, 10) + 10

我想使用javascript更改css的最大值,但它不起作用

我有以下代码:

HTML:

Javascript:

function Down() {
    var class_obj = document.getElementsByClassName("test");
    var ul_obj = class_obj.getElementsByTagName("ul");
    ul_obj.style.top = parseInt(ul_obj.style.top, 10) + 10 + "px"; 
}


我遗漏了什么?

看起来您必须在JSFIDLE上稍微更改JS加载。请看我的图片,了解一些关于如何继续的提示。在调试js时,alert是您最好的朋友

window.Down = (function() {
    var ul_obj = document.querySelectorAll('.test ul');
    Array.prototype.slice.call(ul_obj).forEach(function(element){
        element.style.top = parseInt(element.style.top||50) + 10 + 'px'; 
    })
});


window.onload中的函数Down()是一个带有JSFIDLE的局部变量。

首先
getElementsByClassName
getElementsByTagName
返回的不是元素。其次,在应用样式之前,检查parseInt返回的是一个数字


所有这些都可以通过调试代码找到。

这应该是您的代码,以您想象的方式完成:

this.Down = function Down() {  
    var ul_obj = document.getElementsByTagName("ul");
    if(!ul_obj[0].style.top) ul_obj[0].style.top = '50px';
    ul_obj[0].style.top = parseInt(ul_obj[0].style.top, 10) + 10 + "px";  
}
并通过

<button onclick="javascript:window.Down()">Move Down</button>
但是您需要设置位置:相对于您的.test类

  • 当您需要将选项从“onload”更改为“No wrap-in”时,JSFIDLE无法工作

  • 当您使用诸如“GetElementsByCassName”或“getElementsByTagName”之类的方法时,您会得到一个项目数组。因此,您需要引用数组的第一项

请注意下面我是如何添加对该项的引用的

function Down() {
    var oTest = document.getElementsByClassName("test")[0];  
    var oUl = document.getElementsByTagName("ul")[0];
    oUl.style.top = parseInt(oUl.style.top, 10) + 10 + "px";  
}
  • 此外,我注意到您对元素使用了错误的方法。它应该是“”,而不是“getElementsByClassName”

如果您从中检查该小提琴的cosole日志。单击后,它会抛出一次异常UncaughtReferenceError:Down不是DefineEdit的2013。不要使用侵入性事件处理程序:)您的问题在于对
getElementsByCassName()
的第二次调用。该功能仅在
文档
未捕获类型错误:对象#没有方法“GetElementsByCassName”
上受支持,但在
警报
上不确定是否是您最好的朋友。。。控制台可能会嫉妒-1。这并不能解决问题。代码不起作用的原因是
getElementsByClassName()
仅在
document
上受支持。第二个调用失败(参见给定示例中的控制台)。这个人对js/fiddle相当陌生(见鬼,我是新来fiddle的)。我认为教鱼比提供鱼更好。你的评论也很有帮助,但是有很多东西需要指出,比如“ul”不是类名。
<button onclick="javascript:window.Down()">Move Down</button>
this.Down = function Down() {  
    var ul_obj = document.getElementsByTagName("ul");
    ul_obj[0].style.top = parseInt(ul_obj[0].offsetTop, 10) + 10 + "px";  
}
function Down() {
    var oTest = document.getElementsByClassName("test")[0];  
    var oUl = document.getElementsByTagName("ul")[0];
    oUl.style.top = parseInt(oUl.style.top, 10) + 10 + "px";  
}