无法在javascript dom

时间:2015-10-22 10:17:46

标签: javascript php html

我是javascript的新手,我在动态更改html中锚标记的onclick属性时遇到了问题。以下是我的代码:



function changeImage(){			

    var charAll = <?php echo json_encode($_SESSION['char_all']); ?>;

    var charCount = 0;

    for (var key in charAll) {
						
	var charDiv = document.getElementById(key);
	  
	var anchorTag = charDiv.getElementsByTagName('a')[0];

        anchorTag.onclick = function(){startChar('1', charAll[key].toString());};
   }
}
&#13;
<ul id="portfolio-list" data-animated="fadeIn">

    <li id="character1">
		<img src="character1.jpg" width="250px" height="280px" alt="" />
		<div class="portfolio-item-content">
			<span class="header">Play!</span>
			<p class="body"></p>
		</div>
		<a href="#" onclick="startChar('1', '1')"><i class="more">></i></a>

		<div class="post-info">
			<div class="post-basic-info">
				<h3 class="text-center">Character 1</h3>
			</div>

		</div>

	</li>
	
	<li id="character2">
		<img src="character2.jpg" width="250px" height="280px" alt="" />
		<div class="portfolio-item-content">
			<span class="header">Play!</span>
			<p class="body"></p>
		</div>
		<a href="#" onclick="startChar('1', '1')"><i class="more">></i></a>

		<div class="post-info">
			<div class="post-basic-info">
				<h3 class="text-center">Character 2</h3>
			</div>

		</div>
		
	</li>

</ul>
&#13;
&#13;
&#13;

我打算做的是更改每个<li>元素的onclick功能。会话变量$_SESSION['char_all']是php中的字典,其中键是字符名称(字符串),值是与数据库表中的字符名称对应的字符id。因此,理想情况下<a>标记下的<li>标记应获得startChar('1', '1')(对于字符1)和startChar('1', '2')(对于字符2)的onclick属性。但是,对于这两个角色,我最终得到的是startChar('1', '2')

我哪里错了?我可能会忽略这些非常愚蠢的事情。但是,我无法弄明白。所以,请帮帮我!

1 个答案:

答案 0 :(得分:1)

您的for in程序会引用key,这会在迭代过程中发生变化charAll。 作为一个解决方案(未经测试),您可能希望将该函数包装在外部匿名函数中并将key传递给它:

(function(currentKey) {
    anchorTag.onclick = function(){startChar('1', charAll[currentKey].toString());};
})(key);