2011-07-12 28 views
1

我需要找到/得到一个从一个div标签所谓的“组”类,与JavaScript。 之后,我想插入一个HTML按钮(输入=提交)内我刚刚发现的div。用javascript获取div类?

怎么可以这样用JavaScript来实现?

我到目前为止tryed这一点,但得到和错误:文件未声明!

var myMessage = 'Mange tak'; 
var html_kode = '<input type="submit" onclick="clickedelm = this.value" id="qr_tak" tabindex="1" name="sbutton" title="(Alt + A)" accesskey="a" value="Auto Tak" class="button">'; 

if(myMessage) { 
     var find_class = document.getElementsByClassName('group'); 
     if (find_class) { 
      find_class.innerHTML += html_kode; 
     } 
    } 
+0

JavaScript抱怨'文档'没有为你的代码定义提示*非常*错误。该代码被放置在一个真正的HTML页面中?符合Doctype? – Albireo

+0

这是一个.js文件即时制作..试图使它在Firefox上Greasemonkey –

+0

如果是GreaseMonkey,请检查[我的答案](http://stackoverflow.com/questions/6663770/get-div-class-with- javascript/6664032#6664032),我修改DOM的方式,它的工作原理。 – Albireo

回答

0

退房jQuery

var myMessage = 'Mange tak'; 
var html_kode = '<input type="submit" onclick="clickedelm = this.value" id="qr_tak" tabindex="1" name="sbutton" title="(Alt + A)" accesskey="a" value="Auto Tak" class="button">'; 

$(".find_class").html(html_kode); 
+1

我不能使用JQ,因为我的最后一部作品是针对firefox的Greasemonkey插件 –

+1

@Patrick R:如果Briedis的回答没有回答你的问题,你不应该选择它作为最佳答案... [TheBrain's](http:///stackoverflow.com/questions/6663770/get-div-class-with-javascript/6663815#6663815)或[patorjk's](http://stackoverflow.com/questions/6663770/get-div-class-with-javascript/ 6663822#6663822)与你想要做的事更相关。 – Albireo

+0

这确实奏效,问题在于,我试图插入到textarea中的文本是在iframe中,所以coundnt击中了textarea。而且我还得到了JQuery与GM寻找类 –

5

getElementsByClassName方法返回元件 阵列所以需要迭代的find_class可变

var find_class = document.getElementsByClassName('group'); 
for (var i = 0, len = find_class.length; i < len; i++) { 
    find_class[i].innerHTML = find_class[i].innerHTML + html_kode; 
} 
0

“getElementsByClassName方法” 返回一个set of elements,而不是一个单一的元件。里面的if语句,你真的想要做这样的事情:

var len = find_class.length; 
for (var ii = 0; ii < len; ii++) { 
    find_class[ii].innerHTML = "new code"; 
} 
0

而不是按类名搜索,它通常是最好的ID分配给你的元素,那么你可以通过它的ID唯一标识:

<div id="mydiv"> 
... 
</div> 

,然后你可以做

var mydiv = document.getElementById('mydiv'); 
mydiv.innerHTML = mydif.innerHTML + html_kode; 
+0

一起工作,那是在一个div里面,如果这样做的话,没有ID? –

0

这可能是使用JavaScript库(即jQuery的)一个好主意。

这将使更多更容易获取由类元素。标准的JavaScript没有能力按类获取某些东西(仅通过id)。

如果你决定使用jQuery:

if(myMessage) 
{ 
    var find_class = $('.group'); 
    if(find_class.length > 0) 
    { 
    find_class.each(function(){ 
    $(this).html(html_kode); 
    }); 
    } 
} 

现在,如果你不想使用jQuery(原型,道场,等等),你可能想搜索和ID,而不是一类 - 只要改变一个ID,然后使用的getElementById

希望这有助于

0

getElementsByClassName是DOM中最近的一个新增功能,一些旧版浏览器可能不支持它。 IE8,我在看你。

最新的浏览器应该罚款,但有足够多的人使用旧版本的IE,你真的不能使用getElementsByClassName没有实现某种回退的。

最常见的回退解决方案是使用JQuery代替,但有othersolutions你可以尝试哪些简单的实现这个函数,而不需要其余的JQuery库的开销。

0

既然你说你使用它在Greasemonkey的脚本:

您是否尝试过使用XPath?

这是我的一个脚本的例子:

var XPath = function (path) { 
    return document.evaluate(path, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotItem(0); 
}; 

var yourOuterElement = XPath('/html/body/div[3]/form/table/tbody/tr/td/table'); 

var yourNewElement = document.createElement('input'); 

yourNewElement.setAttribute('type', 'submit'); 
yourNewElement.setAttribute('value', 'Send!'); 

yourOuterElement.appendChild(yourNewElement); 

您可以通过萤火得到的XPath为您yourOuterElement

+0

不,我没有..我在哪里可以读到xpath或找到关于如何让我的工作? –

+0

@Patrick R:你可以在GreaseMonkey的wiki上找到一些信息(http://wiki.greasespot.net/XPath),从那里检查底部链接。如果页面的DOM没有更改,并且没有ID,则非常有用。 – Albireo