JS:无法读取null的属性'style'

时间:2015-03-10 10:06:34

标签: javascript styles

(抱歉我的aplogize,我有一些错误,只是再次更新了新代码。) 我有以下代码,Chome向控制台抛出“未捕获的TypeError:无法读取属性'样式'”:

function gen_mainTable(){
var code = "";
code +='<table width="100%" border="1" cellspacing="0" cellpadding="4" align="center" class="FormTable_table" id="mainTable_table">';
code +='<tr><td class="CL">SELECT</td><br><td colspan="2" class="CR"><input type="radio" id="aa" name="type_group" value="0" onchange="change_mode();" checked>AA<input type="radio" id="bb" name="type_group" value="1" onchange="change_mode();" >BB</td></tr><br>';
code +='<tr id="aa_field" style="display:none"><td class="CL">TYPE_AA:
      </td><td colspan="2" class="CR"><input type="text" id="type_aa" name="type_aa" maxlength="15" size="20" value=""/></td></tr><br>';
code +='<tr id="bb_field"><td class="CL">TYPE_BB:</td>
        <td colspan="2" class="CR"><input type="text" id="type_bb" name="type_bb" maxlength="15" size="20" value=""/></td></tr>

$("mainTable").style.display = "";
$("mainTable").innerHTML = code;}

js part:

function change_mode(){
		var mode = get_checked_value(get_by_name("type_group"));
		if (mode == "0"){
			get_by_id("aa_field").style.display = "";
			get_by_id("bb_field").style.display = "none";
			get_by_id("type_bb").disabled = true;
			get_by_id("type_aa").disabled = false;
		}else{
			get_by_id("aa_field").style.display = "none";
			get_by_id("bb_field").style.display = "";
			get_by_id("type_aa").disabled = true;
			get_by_id("type_bb").disabled = false;
		}
}

更新“get_by_id”功能:

function get_by_id(id){
	with(document){
		return getElementById(id);
	}
}

如果有人可以提供帮助,我将不胜感激,谢谢: - )

1 个答案:

答案 0 :(得分:0)

好吧,我今天学到了一些东西:如果没有tr,你就无法使用ID(document.getElementByIddocument.querySelector)从表格中抓取table行数据周围的标签。

参见此演示。在第一个实例中,我正在选择bob行,因为它位于某些table个标记中,而第二个rose中则是null,因为它不是:

DEMO

因此,要解决此问题,请在行数据周围添加table元素:)

这似乎是因为the HTML specification requires that a tr must live within either a tfoot, thead, tbody or table context因为包含在DOM中“可以接受”。