innerHTML的javascript getElementsByName错误

时间:2015-06-03 07:31:43

标签: javascript dom

我使用DOM来获取多个类名并传递一个函数(with_value)来访问各个元素。但是我得到一个Uncaught TypeError无法读取未定义的属性'innerHTML'。 代码是:

<script>
    var token = 1;
                 var x = document.getElementsByName("commpare_name");

                var y = document.getElementsByName("compare_image");

     function add_compare(num)
            {  num=0;



                    var a = x[num].innerHTML.toUpperCase();
                        alert(a);
                    document.getElementById('name1').innerHTML = a;
                    document.getElementById('name1').title = a
                    document.getElementById('pics1').src = x[num].src;
                    a = document.getElementById('view-details0').action;


            }
</script>

<span id="compare_name" name="compare_name" >no1</span>
<form id="view-details0">
<input type="button" value="Add to Compare" onclick="add_compare(1)">
</form> 

<span id="compare_name" name="compare_name" >no1</span>
<form id="view-details0">
<input type="button" value="Add to Compare" onclick="add_compare(2)">
</form> 

编辑:

<a class="description" id="name1" href="" target="_blank" title="ADD TO COMPARE" ><span>ADD TO COMPARE</span></a>

innerHTML和它的href需要改变

3 个答案:

答案 0 :(得分:3)

您在脚本中提供了错误的名称

commpare_name - > compare_name

答案 1 :(得分:1)

实际问题是您在加载DOM内容之前执行JavaScript。将您的JS包装在

window.addEventListener('DOMContentLoaded',function(){
  …
});

或将<script>放在<body>的底部。

执行时

var x = document.getElementsByName("commpare_name");

你得到一个空的NodeList,因为还没有具有这种名字的元素。当您尝试访问x[num]时,x[0]属性0不存在,因此会生成undefined

var a = x[num].innerHTML.toUpperCase();

之后.innerHTML正在从undefined读取,这是不可能的。

更新:我没有意识到name拼写错误,Vivek Gupta指出了错误。你显然必须改变它。如果您的<script>实际上高于该HTML,那么您仍然需要更改脚本位置或如上所述将其包装。

答案 2 :(得分:0)

static string para1 ; static string para2;  
string[] parts = urlString.Split((new string[] { "?para1=", "&&para2="}), StringSplitOptions.None);

 para1 = parts[1];

 para2= parts[2];

应该是..

var x = document.getElementsByName("commpare_name");