Wat is hier mis mee? Als ik het als bladwijzer opsla en uitvoer, krijg ik een wit scherm met NaN. Firebug geeft (dus) ook geen errors.

javascript: var textareas = document.getElementsByTagName('textarea'); textareas.rows += 1;


Groet,

[edit]Ook niet zo:

javascript: var UBBtextareas = document.getElementsByTagName('textarea'); for (var i =1;i< UBBtextareas.length; i++) { UBBtextareas[i].rows += 1; }
[/edit]
document.getElementsByTagName geeft volgens mij iets van een object mee waar je niet zo maar mee kan werken. Ik had volgens mij eens zoiets met het in een keer veranderen van de z-index van alle input-tags...

* Zoekt in het archief *

Het is dus geen object, maar een collection. :)
Ik gebruikte dit:
function collectionToArray(col) {
	a = new Array();
	for (i = 0; i < col.length; i++)
		a[a.length] = col[i];
	return a;
}

function toonmenu(elmnt) {
  document.getElementById(elmnt).style.visibility="visible";
  var inputs = collectionToArray(document.getElementsByTagName("input"));

  for(i=0;i<inputs.length;i++) {
    if(inputs[i].type == 'text' || inputs[i].type == 'password' || inputs[i].type == 'button' || inputs[i].type == 'submit') {
      inputs[i].style.zIndex = -1;
    }
  }
}


Ik denk dat hiermee wel verder komt... :)

Elwin
Bedankt!

Ik heb er nu dit van gemaakt:
javascript: function collectionToArray(col) { a = new Array(); for (i = 0; i < col.length; i++) { a[a.length] = col[i]; } return a; } var UBBtextareas = collectionToArray(document.getElementsByTagName('textarea')); for (var i =1;i< UBBtextareas.length; i++) { UBBtextareas[i].rows += 1; }

oftewel:

javascript: 
   function collectionToArray(col) 
   { 
      a = new Array(); 
      for (i = 0; i < col.length; i++) 
      { 
         a[a.length] = col[i]; 
      } 
      return a; 
   } 
   var UBBtextareas = collectionToArray(document.getElementsByTagName('textarea')); 
   for (var i =1;i< UBBtextareas.length; i++) 
   {    
      UBBtextareas[i].rows += 1; 
   }


Maar werkt ook niet :-(
gwoon oorspronbkelijke nemen met foreach lusje
Als je document.getElementsByTagName gebruikt kun je de returnwaarde gewoon als array behandelen hoor:

<?php
var x = document.getElementsByTagName ('a');
var n = x.length;

for (i = 0; i < n; i++) {
if (x[i].className == 'popup') {
x[i].onclick = function () {
return open_picture_win (this);
}
}
}
?>
<?php
var x = document.getElementsByTagName ('textarea');
var n = x.length;

for (i = 0; i < n; i++) {
if (x[i].name == 'msg') {
x[i].rows += 1;
}
}
?>

Oké, dat heb ik er dus van gemaakt, oftewel:
javascript: var x = document.getElementsByTagName ('textarea'); var n = x.length; for (i = 0; i < n; i++) { if (x[i].name == 'msg') { x[i].rows += 1; } }


Werkt ook niet.

Ik krijg namelijk een wit scherm met
36
erop. De rijen zijn in het begin 35, en als ik dus op die bladwijzer klik krijg ik 36 te zien.

Weet iemand ene oplossing?
Ik heb even een testscriptje gemaakt en die doet het prima:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<title>Untitled Document</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
	<script type="text/javascript">
		function init () {
			var x = document.getElementsByTagName ('textarea');
			var n = x.length;
			for (i = 0; i < n; i++) {
				if (x[i].name == 'test') {
					x[i].rows = 20;
				}
			}
		}
		window.onload = init;
	</script>
</head>

<body>
	<textarea id="test1" name="test"></textarea>
	<textarea id="test2" name="test"></textarea>
	<textarea id="test3" name="ietsanders"></textarea>
</body>
</html>

[edit]
Tijdelijk staat hier ff een link om het in werking te zien...
[/edit]
Wauw bedankt! Nu nog even friemelen om het in een bladwijzer te doen, zodat ik het op PHPHulp kan gebruiken.

Als ik er dit van maak:
javascript: var x = document.getElementsByTagName ('textarea'); var n = x.length; for (i = 0; i < n; i++) { if (x[i].name == 'msg') { x[i].rows += 1; } }


Dan zie ik even snel de textarea langer worden, maar dan wordt de hele pagina wit en zie ik 36 staan. Moet ik ergens een return: false; doen? Moet ik het daarvoor in een functie zetten?


javascript: 
function langer() { 
   var x = document.getElementsByTagName ('textarea');
   var n = x.length; 
   for (i = 0; i < n; i++) 
   { 
      if (x[i].name == 'msg') 
      { 
         x[i].rows += 1; 
      } 
   } 
   return false; 
} 
langer();


Dan krijg ik een wit scherm met
false
erop.

Hoe los ik dit op?
Ik heb hem geïnstalleerd, maar zie niet echt hoe ik nu mijn textarea groter kan maken :-$

[edit]Mijn script werkt nu ook. Wel met een error van FireBug, maarja. Het is toch alleen voor mij. Je moet achteraan gewoon nog een functie plaatsen, zoals exit();. firebug zegt dan wel: ERROR: exit() is undefined[/edit]

[edit]Heb nu iets andere manier, je definiëert een functie, en doet in die funtie niks. Die functie voer je achteraan uit. Dit is het uiteindelijke resultaat:
[/edit]


javascript: function lol() { } function langer() { var x = document.getElementsByTagName ('textarea'); var n = x.length; for (i = 0; i < n; i++) { x[i].rows += 1; } return false; } langer(); lol();
rechtsonder in de hoek houden dan zie je een vergrootcursor.

Of in welke hoek dan ook, werk op textarea's, inputs...

Reageren