まず、PHP 変数の問題以外にも、100 万と 1 つの問題があります。onmouseover
まず、この属性を使用するべきではありません。JavaScript とイベント - ベスト プラクティスをご覧ください。
したがって、より適切なコードで問題を再現するには、次のようにします。
<!-- This should be in an external JS file -->
<script>
// IE Event Listener "Polyfill"
var addEvent = function(element, event, callback) {
if (document.addEventListener) {
element.addEventListener(event, callback);
} else {
element.attachEvent('on' + event, callback);
}
};
addEvent(document, 'load', function() {
var element = document.getElementById('element');
attachEvent(element, 'onmouseover', function() {
myTimer = setTimeout('imageswitcher(<?php echo $imagename; ?>)', 2000);
});
}
</script>
<!-- Not an actual element, used for example purposes only -->
<element id="element"></element>
変数は「var」を使用して割り当てる必要があります
あなたの次の問題は、あなたの代入myTimer
がvar
. ここで問題が発生する可能性は低いので、覚えておくとよいでしょう。
var myTimer = setTimeout('imageswitcher(<?php echo $imagename; ?>)', 2000);
関数文字列
何をしようとしているのかわかりませんが、関数の代わりに文字列を に渡していますsetTimeout
。それを修正しましょう。
var myTimer = setTimeout(function() {
imageswitcher(<?php echo $imagename; ?>);
}, 2000);
問題への対処
さて、ここで実際の問題に取り組みましょう。
$imagename
おそらく、JavaScriptで考慮していない文字列です。それを修正しましょう。
imageswitcher('<?php echo $imagename; ?>');
すべてを一緒に入れて
<!-- This should be in an external JS file -->
<script>
var addEvent = function(element, event, callback) {
if (document.addEventListener) {
element.addEventListener(event, callback);
} else {
element.attachEvent('on' + event, callback);
}
};
addEvent(document, 'load', function() {
var element = document.getElementById('element');
attachEvent(element, 'onmouseover', function() {
var myTimer = setTimeout(function() {
imageswitcher('<?php echo $imagename; ?>');
}, 2000);
});
};
</script>
<!-- Not an actual element, used for example purposes only -->
<element id="element"></element>