如何使用DOM-tree选择standalone-tag(如输入)?

时间:2015-05-13 16:14:47

标签: javascript html html5 dom

我正在尝试选择一个输入字段来通过javascript添加占位符,但它似乎不起作用......这是我的代码:

function scriptparent() {
var scriptTag = document.getElementsByTagName('script');
    scriptTag = scriptTag[scriptTag.length - 1];
    var parent = scriptTag.parentNode;
    return parent;
};
<div class="form-group">
  <input type="text" class="form-control">
  <script>scriptparent().firstChild.setAttribute("placeholder","something");</script>
</div>

我也尝试了不同的变体(比如获得previousSibling of script),但没有让它起作用。 如果您想知道为什么我尝试这样做是因为“某些东西”是来自json文件的语言上瘾变量,它就像

“scriptparent()firstChild.setAttribute。(” 占位符 “lang.nav.search.placeholder [语言]);”

真实。

我是一个javascript noob,所以如果有人能指出我正确的方向会很好......

1 个答案:

答案 0 :(得分:0)

使用firstElementChild代替firstChild。否则,您将获得表示input之前的空白区域的文本节点。

另外,请确保scriptparent()是全局的。我不知道SO的代码片段在哪里放置了JS,但是你的函数不是全局的或者是及时定义的,所以我只是将脚本移动到了HTML。

<script>
  function scriptparent() {
    var scripts = document.getElementsByTagName('script');
    return scripts[scripts.length - 1].parentNode;
  };
</script>

<div class="form-group">
  <input type="text" class="form-control">
  <script>scriptparent().firstElementChild.placeholder = "something";</script>
</div>