好的,我一直把头撞在墙上,我不知道为什么它没有创建元素。也许我在这里忽略了一些非常小的东西。基本上,这个 Javascript 代码在输出的 PHP 文档中,就像在页面加载的中间的某个地方,现在,不幸的是它不能进入标题。虽然我不确定这是否是问题所在,但也许是......嗯。
// Setting the variables needed to be set.
echo '
<script type="text/javascript" src="' . $settings['default_theme_url'] . '/scripts/shoutbox.js"></script>';
echo '
<script type="text/javascript">
var refreshRate = ', $params['refresh_rate'], ';
createEventListener(window);
window.addEventListener("load", loadShouts, false);
function loadShouts()
{
var alldivs = document.getElementsByTagName(\'div\');
var shoutCount = 0;
var divName = "undefined";
for (var i = 0; i<alldivs.length; i++)
{
var is_counted = 0;
divName = alldivs[i].getAttribute(\'name\');
if (divName.indexOf(\'dp_Reserved_Shoutbox\') < 0 && divName.indexOf(\'dp_Reserved_Counted\') < 0)
continue;
else if(divName == "undefined")
continue;
else
{
if (divName.indexOf(\'dp_Reserved_Counted\') == 0)
{
is_counted = 0;
shoutCount++;
continue;
}
else
{
shoutCount++;
is_counted = 1;
}
}
// Empty out the name attr.
alldivs[i].name = \'dp_Reserved_Counted\';
var shoutId = \'shoutbox_area\' + shoutCount;
// Build the div to be inserted.
var shoutHolder = document.createElement(\'div\');
shoutHolder.setAttribute(\'id\', [shoutId]);
shoutHolder.setAttribute(\'class\', \'dp_control_flow\');
shoutHolder.style.cssText = \'padding-right: 6px;\';
alldivs[i].parentNode.insertBefore(shoutHolder, alldivs[i]);
if (is_counted == 1)
{
startShouts(refreshRate, shoutId);
break;
}
}
}
</script>';
此外,我确信我在这些函数中链接到的其他函数也可以正常工作。这里的问题是,在这个函数中,div 永远不会被创建,我不明白为什么?此外,Firefox,FireBug 告诉我变量 divName 是未定义的,尽管我试图在函数中处理这个问题,但不知道为什么。
无论如何,我需要在以下 HTML 之前插入创建的 div 元素:
echo '
<div name="dp_Reserved_Shoutbox" style="padding-bottom: 9px;"></div>';
我在这里使用 name 而不是 id 因为我不想要重复的 id 值,这就是为什么我要更改 name 值并递增,因为这个函数可能被调用超过 1 次。例如,如果同一页面上有 3 个喊话框(不要问为什么...大声笑),我需要跳过我已经更改为“dp_Reserved_Counted”的其他名称,我相信我这样做是正确的。无论如何,如果可以的话,我会将其放入标题中并仅调用一次,但这是不可能的,因为它们已加载并且无法分辨它们是哪一个,因此它直接硬编码到实际中在 HTML 中的喊话框所在的页面上输出。基本上,不确定这是否是问题,但必须有某种解决方法,除非问题在我上面的代码中...... arrg
请帮我。我真正需要的是对这个问题进行第二次观察。谢谢 :)