javascript - 无法更改 javascript dom 中的嵌套 div

标签 javascript php html

我是 javascript 新手,在动态更改 html 中 anchor 标记的 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());};
   }
}
<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>

我打算做的是更改每个 <li> 的 onclick 函数元素。 session 变量$_SESSION['char_all']是php中的一个字典,其中key是 Angular 色名称(字符串),value是我的数据库表中该 Angular 色名称对应的 Angular 色id。因此,理想情况下 <a> <li> 下的标签标签应获得 startChar('1', '1') 的 onclick 属性(对于字符 1)和 startChar('1', '2') (对于字符 2)。但是,我最终得到的是 startChar('1', '2')对于两个 Angular 色。

我哪里出错了?我忽略的可能是一些非常愚蠢的事情。但是,我无法弄清楚。所以,请帮帮我!

最佳答案

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

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

关于javascript - 无法更改 javascript dom 中的嵌套 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33278658/

相关文章:

php - 从 PHP 中的 HTML 更改 CSS

html - 边框图像重复不起作用

javascript - mailto : supported? 有多好

javascript - 单引号 Google 脚本的串联

javascript - 刷新页面后如何查看超链接状态?

javascript - 如何使用 angular-strap 模态的 onHide 选项

php - RESTful API 身份验证流程

command-line - PHP 警告 : Module 'ldap' & 'mysql' already loaded when running PHP at command line

javascript - 多选列表 - 禁用已选择的项目

php - 如果 PHP 警告指的是 "Line 0"上发生的事情,它意味着什么?