innerHTML, пределы использования

zul

Новичок
innerHTML, пределы использования

Ничего не понимаю, можно ли так использовать innerHTML

есть вот такая штука, но что-то в ней не так и она работать отказывается, как можно решить подобную задачу?:
PHP:
<..........кусь..........>
<script>
function shut(what, str)
{
     document.all.'+what+'.innerHTML = str;
}
</script>

<table>
<?
for ($i=1;$i<11;$i++)
{
       echo "<span id=d$i><tr><td><a href=\"#\" onclick=\"shut('d$i','<tr><td>Бла-бла-бла</td></tr>')\">make it</a></td></tr></span>";
}
?>
</table>
<..........кусь..........>
 

Altex

Новичок
zul
посмотри ВНИМАТЕЛЬНО на подсветку, думаешь это форум виноват? Кавычки надо было слэшить!
 

Altex

Новичок
и в третьих - (это ИМХО) - <table><span><tr><td> - не верно

нжно так <table><tr><td><span>
 

Altex

Новичок
и ещё у тебя тэг <a ... > не имеет закрывающей части - </a>

так что собери все что я тебе сказал вместе и получишь работающий код
 

zul

Новичок
эхехе, вот меня совсем не устраивает возможность смены текста внутри ячейки - интересует именно замена ячейки на пустоту! =) как это сделать то?

п.с. Код пофиксил.
 

zul

Новичок
причём как ты говоришь - менять текст вне таблицы у меня получается
 

гоша

Guest
table/tr не поддерживают innerHTML.
используйте deleteRow, deleteCell
 

zul

Новичок
Вот этот вариант меняет строку в таблице на строку вне таблицы - не годится ((
PHP:
<script>
function shut(form_name, str)
{
	eval('document.all.'+form_name+'.innerHTML = \"\"');
	eval('document.all.'+form_name+'.innerHTML += str');
}
</SCRIPT>
	</HEAD>
<body>
<style>
DIV.vis {	
}
DIV.invis {
DISPLAY: none;
}
SPAN.vis {	
}
SPAN.invis {
	DISPLAY: none;
}
</style>

<table width="50%" border="1" align="center">
<SPAN id=d0><tr><td><iframe width="0" height="0" name=hid></IFRAME></td></tr></span>
<?
for ($i=1;$i<11;$i++)
{
	?>
	<SPAN id=d<?=$i?>><tr><td><input type=button value="<?=$i?>" onclick="shut('d<?=$i?>','<tr><td bgcolor=red>test1<?=$i?></td></tr>')"></td></tr></SPAN>
	<?
}
?>
</TABLE>
 

zul

Новичок
эээ рано я закрывать тему начал...
теперь есть вопрос - при удалении одной строки (используя deleteRow) индексы строк, как я понял ренумеруются..
вот пример:
PHP:
<table width="50%" border="1" align="center" id=mtable>
<?
for ($i=1;$i<11;$i++)
{
	?>
	<tr><td><input type=button value="<?=$i?>" onclick="document.all.mtable.deleteRow(<?=$i?>);"></td></tr>
	<?
}
?>
</TABLE>
Не могу я рассчитывать на то, что строки будут удаляться по порядку
 

lucas

Guest
Возможно также использовать свойство display стиля ячейки.
 

zul

Новичок
Разве ячейки поддерживают это свойство? У меня не получилось...

в приведённом мною выше примере можно удалить все ячейки только снизу вверх... =(

update: Ячейки поддерживают это свойство! Sorry!

И всё-таки можно ли это сделать с помощью deleteRows?
 

гоша

Guest
Код:
function findParent(oElement,strTag){
	while(oElement){
		if(oElement.tagName==strTag)
			return oElement;
		oElement=oElement.parentNode;
	}
	return null;
}

function deleteThisRow(oElement){
	var oTR=findParent(oElement,"TR");
	var oTable=findParent(oTR,"TABLE");
	oTable.deleteRow(oTR.rowIndex);
}
<tr><td><input type=button value="<?=$i?>" onclick="deleteThisRow(this);"></td></tr>

в таком духе валяй.
 
Сверху